|
1 | 1 | package io.reflectoring.service;
|
2 | 2 |
|
3 | 3 | import java.net.URL;
|
4 |
| -import java.time.Duration; |
5 | 4 |
|
6 | 5 | import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
7 | 6 | import org.springframework.stereotype.Service;
|
|
18 | 17 | @RequiredArgsConstructor
|
19 | 18 | @EnableConfigurationProperties(AwsS3BucketProperties.class)
|
20 | 19 | public class StorageService {
|
21 |
| - |
| 20 | + |
22 | 21 | private final S3Template s3Template;
|
23 | 22 | private final AwsS3BucketProperties awsS3BucketProperties;
|
24 |
| - |
| 23 | + |
25 | 24 | @SneakyThrows
|
26 | 25 | public void save(@NonNull final MultipartFile file) {
|
27 | 26 | final var key = file.getOriginalFilename();
|
28 | 27 | final var bucketName = awsS3BucketProperties.getBucketName();
|
29 | 28 |
|
30 | 29 | s3Template.upload(bucketName, key, file.getInputStream());
|
31 | 30 | }
|
32 |
| - |
| 31 | + |
33 | 32 | public S3Resource retrieve(@NonNull final String objectKey) {
|
34 | 33 | final var bucketName = awsS3BucketProperties.getBucketName();
|
35 | 34 | return s3Template.download(bucketName, objectKey);
|
36 | 35 | }
|
37 |
| - |
| 36 | + |
38 | 37 | public void delete(@NonNull final String objectKey) {
|
39 | 38 | final var bucketName = awsS3BucketProperties.getBucketName();
|
40 | 39 | s3Template.deleteObject(bucketName, objectKey);
|
41 | 40 | }
|
42 |
| - |
| 41 | + |
43 | 42 | public URL generateViewablePresignedUrl(@NonNull final String objectKey) {
|
44 | 43 | final var bucketName = awsS3BucketProperties.getBucketName();
|
45 |
| - final var urlValidity = awsS3BucketProperties.getPresignedUrl().getValidity(); |
46 |
| - final var urlValidityDuration = Duration.ofSeconds(urlValidity); |
47 |
| - |
48 |
| - return s3Template.createSignedGetURL(bucketName, objectKey, urlValidityDuration); |
| 44 | + final var urlValidity = awsS3BucketProperties.getPresignedUrlValidity(); |
| 45 | + |
| 46 | + return s3Template.createSignedGetURL(bucketName, objectKey, urlValidity); |
49 | 47 | }
|
50 |
| - |
| 48 | + |
51 | 49 | public URL generateUploadablePresignedUrl(@NonNull final String objectKey) {
|
52 | 50 | final var bucketName = awsS3BucketProperties.getBucketName();
|
53 |
| - final var urlValidity = awsS3BucketProperties.getPresignedUrl().getValidity(); |
54 |
| - final var urlValidityDuration = Duration.ofSeconds(urlValidity); |
| 51 | + final var urlValidity = awsS3BucketProperties.getPresignedUrlValidity(); |
55 | 52 |
|
56 |
| - return s3Template.createSignedPutURL(bucketName, objectKey, urlValidityDuration); |
| 53 | + return s3Template.createSignedPutURL(bucketName, objectKey, urlValidity); |
57 | 54 | }
|
58 |
| - |
| 55 | + |
59 | 56 | }
|
0 commit comments