From 0bfacf3cff84926c1bf76e6e8fdf8985fa9d042a Mon Sep 17 00:00:00 2001 From: Sachin Karve Date: Mon, 1 Jul 2024 11:19:09 -0700 Subject: [PATCH] adding extension to media in S3 upload and clean up switchCase before sending to S3 --- .../java/com/meta/cp4m/S3PreProcessor.java | 28 ++++++++++++++----- .../com/meta/cp4m/S3PreProcessorConfig.java | 5 ++-- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/meta/cp4m/S3PreProcessor.java b/src/main/java/com/meta/cp4m/S3PreProcessor.java index 5693971..e42bef7 100644 --- a/src/main/java/com/meta/cp4m/S3PreProcessor.java +++ b/src/main/java/com/meta/cp4m/S3PreProcessor.java @@ -8,6 +8,7 @@ package com.meta.cp4m; import com.meta.cp4m.message.Message; +import com.meta.cp4m.message.Payload; import com.meta.cp4m.message.ThreadState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,10 +31,20 @@ public class S3PreProcessor implements PreProcessor { @Override public ThreadState run(ThreadState in) { - if(in.tail().payload().getClass().getName().contains("Image") || in.tail().payload().getClass().getName().contains("Document")) { - this.sendRequest((byte[]) in.tail().payload().value(), in.tail().senderId().toString()); + + switch (in.tail().payload()) { + case Payload.Image i -> { + this.sendRequest(i.value(), in.userId().toString(), i.extension()); + } + case Payload.Document i -> { + this.sendRequest(i.value(), in.userId().toString(), i.extension()); + } + default -> { + System.out.println("Here"); + return in; + } } - return null; + return in; // TODO: remove last message } public S3PreProcessor(String awsAccessKeyID, String awsSecretAccessKey, String region, String bucket) { @@ -56,13 +67,16 @@ public S3PreProcessor(String awsAccessKeyID, String awsSecretAccessKey, String r .build(); } - public void sendRequest(byte[] media, String senderID) { - String key = senderID + "_" + Instant.now().toEpochMilli(); - PutObjectResponse res = s3Client.putObject(PutObjectRequest.builder().bucket(this.bucket).key(key).contentType("application/*") + public void sendRequest(byte[] media, String senderID, String extension) { + String key = senderID + + '_' + + Instant.now().toEpochMilli() + + '.' + + extension; + PutObjectResponse res = s3Client.putObject(PutObjectRequest.builder().bucket(this.bucket).key(key).contentType("application/" + extension) .build(), RequestBody.fromBytes(media)); s3Client.close(); LOGGER.info("Media uploaded to AWS S3"); - } } \ No newline at end of file diff --git a/src/main/java/com/meta/cp4m/S3PreProcessorConfig.java b/src/main/java/com/meta/cp4m/S3PreProcessorConfig.java index 6fed754..f186092 100644 --- a/src/main/java/com/meta/cp4m/S3PreProcessorConfig.java +++ b/src/main/java/com/meta/cp4m/S3PreProcessorConfig.java @@ -13,7 +13,7 @@ import com.meta.cp4m.message.Message; import java.util.Objects; -public class S3PreProcessorConfig implements PreProcessorConfig{ +public class S3PreProcessorConfig implements PreProcessorConfig { private final String name; private final String awsAccessKeyId; private final String awsSecretAccessKey; @@ -26,7 +26,7 @@ public S3PreProcessorConfig( @JsonProperty("aws_access_key_id") String awsAccessKeyId, @JsonProperty("aws_secret_access_key") String awsSecretAccessKey, @JsonProperty("region") String region, - @JsonProperty("bucket") String bucket){ + @JsonProperty("bucket") String bucket) { this.name = Objects.requireNonNull(name, "name is a required parameter"); this.awsAccessKeyId = Objects.requireNonNull(awsAccessKeyId, "aws access key is a required parameter"); this.awsSecretAccessKey = Objects.requireNonNull(awsSecretAccessKey, "aws secret access key is a required parameter"); @@ -60,4 +60,3 @@ public PreProcessor toPreProcessor() { return new S3PreProcessor<>(awsAccessKeyId, awsSecretAccessKey, region, bucket); } } -