From f8848fa457758dd70bee1661baf973f3eda2d423 Mon Sep 17 00:00:00 2001 From: hgo641 Date: Wed, 18 Oct 2023 18:53:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../image/infrastructure/ImageUploader.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java b/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java index 739e5c8db..59377c0c8 100644 --- a/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java +++ b/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java @@ -8,11 +8,13 @@ import com.amazonaws.services.s3.model.ObjectMetadata; import hanglog.global.exception.ImageException; import hanglog.image.domain.ImageFile; +import hanglog.image.domain.S3ImageEvent; import java.io.IOException; import java.io.InputStream; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; @Component @@ -22,6 +24,7 @@ public class ImageUploader { private static final String CACHE_CONTROL_VALUE = "max-age=3153600"; private final AmazonS3 s3Client; + private final ApplicationEventPublisher publisher; @Value("${cloud.aws.s3.bucket}") private String bucket; @@ -30,9 +33,14 @@ public class ImageUploader { private String folder; public List uploadImages(final List imageFiles) { - return imageFiles.stream() - .map(this::uploadImage) - .toList(); + try { + return imageFiles.stream() + .map(this::uploadImage) + .toList(); + } catch (final ImageException e) { + imageFiles.forEach(imageFile -> publisher.publishEvent(new S3ImageEvent(imageFile.getHashedName()))); + throw e; + } } private String uploadImage(final ImageFile imageFile) { From 395c781eaf18d84290c803bd475a2083bf5430bb Mon Sep 17 00:00:00 2001 From: hgo641 Date: Wed, 18 Oct 2023 20:51:49 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EB=A1=9C=EC=A7=81=EC=9D=84=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../image/infrastructure/ImageUploader.java | 14 +++----------- .../java/hanglog/image/service/ImageService.java | 14 +++++++++++++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java b/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java index 59377c0c8..739e5c8db 100644 --- a/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java +++ b/backend/src/main/java/hanglog/image/infrastructure/ImageUploader.java @@ -8,13 +8,11 @@ import com.amazonaws.services.s3.model.ObjectMetadata; import hanglog.global.exception.ImageException; import hanglog.image.domain.ImageFile; -import hanglog.image.domain.S3ImageEvent; import java.io.IOException; import java.io.InputStream; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; @Component @@ -24,7 +22,6 @@ public class ImageUploader { private static final String CACHE_CONTROL_VALUE = "max-age=3153600"; private final AmazonS3 s3Client; - private final ApplicationEventPublisher publisher; @Value("${cloud.aws.s3.bucket}") private String bucket; @@ -33,14 +30,9 @@ public class ImageUploader { private String folder; public List uploadImages(final List imageFiles) { - try { - return imageFiles.stream() - .map(this::uploadImage) - .toList(); - } catch (final ImageException e) { - imageFiles.forEach(imageFile -> publisher.publishEvent(new S3ImageEvent(imageFile.getHashedName()))); - throw e; - } + return imageFiles.stream() + .map(this::uploadImage) + .toList(); } private String uploadImage(final ImageFile imageFile) { diff --git a/backend/src/main/java/hanglog/image/service/ImageService.java b/backend/src/main/java/hanglog/image/service/ImageService.java index 14fd84e42..3d7a71a04 100644 --- a/backend/src/main/java/hanglog/image/service/ImageService.java +++ b/backend/src/main/java/hanglog/image/service/ImageService.java @@ -5,10 +5,12 @@ import hanglog.global.exception.ImageException; import hanglog.image.domain.ImageFile; +import hanglog.image.domain.S3ImageEvent; import hanglog.image.dto.ImagesResponse; import hanglog.image.infrastructure.ImageUploader; import java.util.List; import lombok.RequiredArgsConstructor; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -20,16 +22,26 @@ public class ImageService { private static final int EMPTY_LIST_SIZE = 0; private final ImageUploader imageUploader; + private final ApplicationEventPublisher publisher; public ImagesResponse save(final List images) { validateSizeOfImages(images); final List imageFiles = images.stream() .map(ImageFile::new) .toList(); - final List imageNames = imageUploader.uploadImages(imageFiles); + final List imageNames = uploadImages(imageFiles); return new ImagesResponse(imageNames); } + private List uploadImages(final List imageFiles) { + try { + return imageUploader.uploadImages(imageFiles); + } catch (final ImageException e) { + imageFiles.forEach(imageFile -> publisher.publishEvent(new S3ImageEvent(imageFile.getHashedName()))); + throw e; + } + } + private void validateSizeOfImages(final List images) { if (images.size() > MAX_IMAGE_LIST_SIZE) { throw new ImageException(EXCEED_IMAGE_LIST_SIZE);