This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 5a15cfcc1f7 CAMEL-18069: Handle uriEndpointOverride in generation of AWS S3 download links 5a15cfcc1f7 is described below commit 5a15cfcc1f70e0c7de6e492028bce206ec9b5939 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Fri May 6 11:53:50 2022 +0100 CAMEL-18069: Handle uriEndpointOverride in generation of AWS S3 download links --- .../camel/component/aws2/s3/AWS2S3Producer.java | 16 +++++++++---- .../S3CreateDownloadLinkOperationIT.java | 26 +++++++++++++++++++--- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java index cf2aec2f4a3..80c52dc5b76 100644 --- a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java +++ b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java @@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; +import java.net.URI; import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; @@ -561,10 +562,17 @@ public class AWS2S3Producer extends DefaultProducer { if (ObjectHelper.isNotEmpty(getConfiguration().getAmazonS3Presigner())) { presigner = getConfiguration().getAmazonS3Presigner(); } else { - presigner = S3Presigner.builder() - .credentialsProvider(StaticCredentialsProvider.create( - AwsBasicCredentials.create(getConfiguration().getAccessKey(), getConfiguration().getSecretKey()))) - .region(Region.of(getConfiguration().getRegion())).build(); + S3Presigner.Builder builder = S3Presigner.builder(); + builder.credentialsProvider(StaticCredentialsProvider.create( + AwsBasicCredentials.create(getConfiguration().getAccessKey(), getConfiguration().getSecretKey()))) + .region(Region.of(getConfiguration().getRegion())); + + String uriEndpointOverride = getConfiguration().getUriEndpointOverride(); + if (ObjectHelper.isNotEmpty(uriEndpointOverride)) { + builder.endpointOverride(URI.create(uriEndpointOverride)); + } + + presigner = builder.build(); } GetObjectRequest getObjectRequest = GetObjectRequest.builder() diff --git a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java index 929f4f2d73f..f05d87d4c65 100644 --- a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java +++ b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java @@ -27,8 +27,9 @@ import org.apache.camel.component.aws2.s3.AWS2S3Operations; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; public class S3CreateDownloadLinkOperationIT extends Aws2S3Base { @@ -75,8 +76,24 @@ public class S3CreateDownloadLinkOperationIT extends Aws2S3Base { } }); - assertNotNull(ex1.getMessage().getBody()); + Exchange ex3 = template.request("direct:createDownloadLinkWithUriOverride", new Processor() { + public void process(Exchange exchange) { + exchange.getIn().setHeader(AWS2S3Constants.KEY, "CamelUnitTest2"); + exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, "mycamel2"); + exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, AWS2S3Operations.createDownloadLink); + } + }); + + String downloadLink = ex1.getMessage().getBody(String.class); + assertNotNull(downloadLink); + assertTrue(downloadLink.startsWith("https://mycamel2.s3.eu-west-1.amazonaws.com")); + assertNull(ex2.getMessage().getBody()); + + String downloadLinkWithUriOverride = ex3.getMessage().getBody(String.class); + assertNotNull(downloadLinkWithUriOverride); + assertTrue(downloadLinkWithUriOverride.startsWith("http://localhost:8080")); + assertMockEndpointsSatisfied(); } @@ -96,6 +113,9 @@ public class S3CreateDownloadLinkOperationIT extends Aws2S3Base { from("direct:createDownloadLink").to(awsEndpoint + "&accessKey=xxx&secretKey=yyy®ion=eu-west-1") .to("mock:result"); + from("direct:createDownloadLinkWithUriOverride") + .to(awsEndpoint + + "&accessKey=xxx&secretKey=yyy®ion=eu-west-1&uriEndpointOverride=http://localhost:8080"); } }; }