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&region=eu-west-1")
                         .to("mock:result");
 
+                from("direct:createDownloadLinkWithUriOverride")
+                        .to(awsEndpoint
+                            + 
"&accessKey=xxx&secretKey=yyy&region=eu-west-1&uriEndpointOverride=http://localhost:8080";);
             }
         };
     }

Reply via email to