From bb65ec7d24672f1bdd8662e170f3e65bcc6d4d5b Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Mon, 22 Jul 2024 17:52:48 -0500 Subject: [PATCH] Added S3Manager.load() method. --- .../api/s3/MinioS3ManagerTests.java | 26 +++++++++++++++++-- .../mealsmadeeasy/api/s3/MinioS3Manager.java | 16 ++++++++++++ .../app/mealsmadeeasy/api/s3/S3Manager.java | 5 ++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/integrationTest/java/app/mealsmadeeasy/api/s3/MinioS3ManagerTests.java b/src/integrationTest/java/app/mealsmadeeasy/api/s3/MinioS3ManagerTests.java index c89f695..8dcbc5c 100644 --- a/src/integrationTest/java/app/mealsmadeeasy/api/s3/MinioS3ManagerTests.java +++ b/src/integrationTest/java/app/mealsmadeeasy/api/s3/MinioS3ManagerTests.java @@ -36,14 +36,36 @@ public class MinioS3ManagerTests { @Test public void simpleStore() { try (final InputStream hal9000 = MinioS3ManagerTests.class.getResourceAsStream("HAL9000.svg")) { - final String result = this.s3Manager.store( + final String objectName = this.s3Manager.store( "test-images", "HAL9000.svg", "image/svg+xml", hal9000, 27881L ); - assertEquals("HAL9000.svg", result); + assertEquals("HAL9000.svg", objectName); + } catch (IOException ioException) { + throw new RuntimeException(ioException); + } + } + + @Test + public void simpleLoad() { + try (final InputStream hal9000 = MinioS3ManagerTests.class.getResourceAsStream("HAL9000.svg")) { + if (hal9000 == null) { + throw new RuntimeException("HAL9000.svg could not be found"); + } + final String objectName = this.s3Manager.store( + "test-images", + "HAL9000.svg", + "image/svg+xml", + hal9000, + 27881L + ); + try (final InputStream loadedObject = this.s3Manager.load("test-images", objectName)) { + final byte[] stored = loadedObject.readAllBytes(); + assertEquals(27881L, stored.length); + } } catch (IOException ioException) { throw new RuntimeException(ioException); } diff --git a/src/main/java/app/mealsmadeeasy/api/s3/MinioS3Manager.java b/src/main/java/app/mealsmadeeasy/api/s3/MinioS3Manager.java index 11ee66f..db018b0 100644 --- a/src/main/java/app/mealsmadeeasy/api/s3/MinioS3Manager.java +++ b/src/main/java/app/mealsmadeeasy/api/s3/MinioS3Manager.java @@ -22,6 +22,22 @@ public class MinioS3Manager implements S3Manager { @Value("${app.mealsmadeeasy.api.minio.secretKey}") private String secretKey; + @Override + public InputStream load(String bucket, String objectName) throws IOException { + try (final MinioClient client = MinioClient.builder() + .endpoint(this.endpoint) + .credentials(this.accessKey, this.secretKey) + .build() + ) { + return client.getObject(GetObjectArgs.builder() + .bucket(bucket) + .object(objectName) + .build()); + } catch (Exception e) { + throw new IOException(e); + } + } + @Override public String store( String bucketName, diff --git a/src/main/java/app/mealsmadeeasy/api/s3/S3Manager.java b/src/main/java/app/mealsmadeeasy/api/s3/S3Manager.java index 144b3f7..0b10a51 100644 --- a/src/main/java/app/mealsmadeeasy/api/s3/S3Manager.java +++ b/src/main/java/app/mealsmadeeasy/api/s3/S3Manager.java @@ -5,6 +5,11 @@ import java.io.InputStream; public interface S3Manager { + InputStream load( + String bucket, + String objectName + ) throws IOException; + /** * @param bucket the target bucket in which to store the content * @param filename the filename to store, usually a uuid + appropriate extension