|
20 | 20 | import java.io.InputStream;
|
21 | 21 | import java.io.OutputStream;
|
22 | 22 | import java.net.URL;
|
23 |
| -import java.net.URLEncoder; |
24 |
| -import java.nio.charset.StandardCharsets; |
25 | 23 | import java.time.Instant;
|
26 |
| -import java.util.ArrayList; |
27 |
| -import java.util.List; |
28 | 24 | import java.util.Map;
|
29 | 25 | import org.springframework.core.io.AbstractResource;
|
30 | 26 | import org.springframework.core.io.WritableResource;
|
31 | 27 | import org.springframework.lang.Nullable;
|
32 | 28 | import org.springframework.util.Assert;
|
33 | 29 | import software.amazon.awssdk.services.s3.S3Client;
|
| 30 | +import software.amazon.awssdk.services.s3.model.GetUrlRequest; |
34 | 31 | import software.amazon.awssdk.services.s3.model.HeadObjectResponse;
|
35 | 32 | import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
|
36 | 33 |
|
@@ -85,12 +82,9 @@ public S3Resource(Location location, S3Client s3Client, S3OutputStreamProvider s
|
85 | 82 |
|
86 | 83 | @Override
|
87 | 84 | public URL getURL() throws IOException {
|
88 |
| - List<String> splits = new ArrayList<>(); |
89 |
| - for (String split : location.getObject().split("/")) { |
90 |
| - splits.add(URLEncoder.encode(split, StandardCharsets.UTF_8.toString())); |
91 |
| - } |
92 |
| - String encodedObjectName = String.join("/", splits); |
93 |
| - return new URL("https", location.getBucket() + ".s3.amazonaws.com", "/" + encodedObjectName); |
| 85 | + GetUrlRequest getUrlRequest = GetUrlRequest.builder().bucket(this.getLocation().getBucket()) |
| 86 | + .key(this.location.getObject()).versionId(this.location.getVersion()).build(); |
| 87 | + return s3Client.utilities().getUrl(getUrlRequest); |
94 | 88 | }
|
95 | 89 |
|
96 | 90 | @Override
|
|
0 commit comments