From acb7d291ede5b6c12c3fd1224ba24da766389028 Mon Sep 17 00:00:00 2001 From: lcomment Date: Mon, 2 Sep 2024 17:43:58 +0900 Subject: [PATCH 1/3] Rename .java to .kt --- .../java/com/cakk/external/config/{S3Config.java => S3Config.kt} | 0 .../com/cakk/external/service/{S3Service.java => S3Service.kt} | 0 .../vo/{CertificationMessage.java => CertificationMessage.kt} | 0 .../com/cakk/external/vo/{PresignedUrl.java => PresignedUrl.kt} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename cakk-external/src/main/java/com/cakk/external/config/{S3Config.java => S3Config.kt} (100%) rename cakk-external/src/main/java/com/cakk/external/service/{S3Service.java => S3Service.kt} (100%) rename cakk-external/src/main/java/com/cakk/external/vo/{CertificationMessage.java => CertificationMessage.kt} (100%) rename cakk-external/src/main/java/com/cakk/external/vo/{PresignedUrl.java => PresignedUrl.kt} (100%) diff --git a/cakk-external/src/main/java/com/cakk/external/config/S3Config.java b/cakk-external/src/main/java/com/cakk/external/config/S3Config.kt similarity index 100% rename from cakk-external/src/main/java/com/cakk/external/config/S3Config.java rename to cakk-external/src/main/java/com/cakk/external/config/S3Config.kt diff --git a/cakk-external/src/main/java/com/cakk/external/service/S3Service.java b/cakk-external/src/main/java/com/cakk/external/service/S3Service.kt similarity index 100% rename from cakk-external/src/main/java/com/cakk/external/service/S3Service.java rename to cakk-external/src/main/java/com/cakk/external/service/S3Service.kt diff --git a/cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.java b/cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.kt similarity index 100% rename from cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.java rename to cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.kt diff --git a/cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.java b/cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.kt similarity index 100% rename from cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.java rename to cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.kt From b86443a76c740295f664295638fa03c00f72dfd6 Mon Sep 17 00:00:00 2001 From: lcomment Date: Mon, 2 Sep 2024 17:43:58 +0900 Subject: [PATCH 2/3] =?UTF-8?q?Refactor=20|=20CAKK-62=20|=20kotlin?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cakk/external/config/S3Config.kt | 67 +++++------- .../com/cakk/external/service/S3Service.kt | 102 ++++++++---------- .../cakk/external/vo/CertificationMessage.kt | 25 +++-- .../java/com/cakk/external/vo/PresignedUrl.kt | 13 ++- 4 files changed, 89 insertions(+), 118 deletions(-) diff --git a/cakk-external/src/main/java/com/cakk/external/config/S3Config.kt b/cakk-external/src/main/java/com/cakk/external/config/S3Config.kt index e8fc430e..8999ac4e 100644 --- a/cakk-external/src/main/java/com/cakk/external/config/S3Config.kt +++ b/cakk-external/src/main/java/com/cakk/external/config/S3Config.kt @@ -1,46 +1,33 @@ -package com.cakk.external.config; +package com.cakk.external.config -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Primary -import com.amazonaws.auth.AWSStaticCredentialsProvider; -import com.amazonaws.auth.BasicAWSCredentials; -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.amazonaws.auth.AWSStaticCredentialsProvider +import com.amazonaws.auth.BasicAWSCredentials +import com.amazonaws.services.s3.AmazonS3 +import com.amazonaws.services.s3.AmazonS3ClientBuilder @Configuration -public class S3Config { - - private final String accessKey; - private final String secretKey; - private final String region; - - public S3Config( - @Value("${cloud.aws.credentials.access-key}") - String accessKey, - @Value("${cloud.aws.credentials.secret-key}") - String secretKey, - @Value("${cloud.aws.region.static}") - String region) { - this.accessKey = accessKey; - this.secretKey = secretKey; - this.region = region; - } - - @Bean - @Primary - public BasicAWSCredentials awsCredentialsProvider() { - return new BasicAWSCredentials(accessKey, secretKey); - } - - @Bean - public AmazonS3 amazonS3() { - return AmazonS3ClientBuilder.standard() - .withRegion(region) - .withCredentials(new AWSStaticCredentialsProvider(awsCredentialsProvider())) - .build(); - } +class S3Config( + @Value("\${cloud.aws.credentials.access-key}") private val accessKey: String, + @Value("\${cloud.aws.credentials.secret-key}") private val secretKey: String, + @Value("\${cloud.aws.region.static}") private val region: String +) { + @Bean + @Primary + fun awsCredentialsProvider(): BasicAWSCredentials { + return BasicAWSCredentials(accessKey, secretKey) + } + + @Bean + fun amazonS3(): AmazonS3 { + return AmazonS3ClientBuilder.standard() + .withRegion(region) + .withCredentials(AWSStaticCredentialsProvider(awsCredentialsProvider())) + .build() + } } diff --git a/cakk-external/src/main/java/com/cakk/external/service/S3Service.kt b/cakk-external/src/main/java/com/cakk/external/service/S3Service.kt index 758220ac..4b71753e 100644 --- a/cakk-external/src/main/java/com/cakk/external/service/S3Service.kt +++ b/cakk-external/src/main/java/com/cakk/external/service/S3Service.kt @@ -1,84 +1,70 @@ -package com.cakk.external.service; +package com.cakk.external.service -import java.util.Date; -import java.util.UUID; +import java.util.* -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Value +import org.springframework.stereotype.Service -import com.amazonaws.AmazonServiceException; -import com.amazonaws.HttpMethod; -import com.amazonaws.SdkClientException; -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; +import com.amazonaws.AmazonServiceException +import com.amazonaws.HttpMethod +import com.amazonaws.SdkClientException +import com.amazonaws.services.s3.AmazonS3 +import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest -import com.cakk.common.enums.ReturnCode; -import com.cakk.common.exception.CakkException; -import com.cakk.external.vo.PresignedUrl; +import com.cakk.common.enums.ReturnCode +import com.cakk.common.exception.CakkException +import com.cakk.external.vo.PresignedUrl @Service -public class S3Service { +class S3Service( + private val amazonS3: AmazonS3, + @Value("\${cloud.aws.s3.bucket}") private val bucket: String, + @Value("\${cloud.aws.s3.expire-in}") private val expiredIn: String, + @Value("\${cloud.aws.s3.object-key}") private val objectKey: String +) { - private final AmazonS3 amazonS3; - private final String bucket; - private final String expiredIn; - private final String objectKey; - - public S3Service( - @Value("${cloud.aws.s3.bucket}") String bucket, - @Value("${cloud.aws.s3.expire-in}") String expiredIn, - @Value("${cloud.aws.s3.object-key}") String objectKey, - AmazonS3 amazonS3 - ) { - this.bucket = bucket; - this.expiredIn = expiredIn; - this.objectKey = objectKey; - this.amazonS3 = amazonS3; - } - - public PresignedUrl getPresignedUrlWithImagePath() { + fun getPresignedUrlWithImagePath(): PresignedUrl { try { - String imagePath = makeObjectKey(); - String imageUrl = getImageUrl(imagePath); - GeneratePresignedUrlRequest generatePresignedUrlRequest = createGeneratePresignedUrlRequestInstance( - imagePath); - String presignedUrl = generatePresignedUrlRequest(generatePresignedUrlRequest); - return new PresignedUrl(imagePath, imageUrl, presignedUrl); - } catch (SdkClientException e) { - throw new CakkException(ReturnCode.EXTERNAL_SERVER_ERROR); + val imagePath = makeObjectKey() + val imageUrl = getImageUrl(imagePath) + val generatePresignedUrlRequest = createGeneratePresignedUrlRequestInstance(imagePath) + val presignedUrl = generatePresignedUrlRequest(generatePresignedUrlRequest) + + return PresignedUrl(imagePath, imageUrl, presignedUrl) + } catch (e: SdkClientException) { + throw CakkException(ReturnCode.EXTERNAL_SERVER_ERROR) } } - public void deleteObject(String imagePath) { + fun deleteObject(imagePath: String) { try { - amazonS3.deleteObject(bucket, imagePath); - } catch (AmazonServiceException e) { - throw new CakkException(ReturnCode.EXTERNAL_SERVER_ERROR); + amazonS3.deleteObject(bucket, imagePath) + } catch (e: AmazonServiceException) { + throw CakkException(ReturnCode.EXTERNAL_SERVER_ERROR) } } - private GeneratePresignedUrlRequest createGeneratePresignedUrlRequestInstance(String imagePath) { - Date expiration = new Date(); - long expirationInMs = expiration.getTime(); - expirationInMs += Long.parseLong(expiredIn); - expiration.setTime(expirationInMs); + private fun createGeneratePresignedUrlRequestInstance(imagePath: String): GeneratePresignedUrlRequest { + val expiration = Date() + var expirationInMs = expiration.time + expirationInMs += expiredIn.toLong() + expiration.time = expirationInMs - return new GeneratePresignedUrlRequest(bucket, imagePath) + return GeneratePresignedUrlRequest(bucket, imagePath) .withMethod(HttpMethod.PUT) - .withExpiration(expiration); + .withExpiration(expiration) } - private String generatePresignedUrlRequest(GeneratePresignedUrlRequest generatePresignedUrlRequest) - throws SdkClientException { - return amazonS3.generatePresignedUrl(generatePresignedUrlRequest).toString(); + private fun generatePresignedUrlRequest(generatePresignedUrlRequest: GeneratePresignedUrlRequest): String { + return amazonS3.generatePresignedUrl(generatePresignedUrlRequest).toString() } - private String makeObjectKey() { - return new StringBuffer().append(objectKey).append("/").append(UUID.randomUUID()).append(".jpeg").toString(); + private fun makeObjectKey(): String { + return StringBuffer().append(objectKey).append("/").append(UUID.randomUUID()).append(".jpeg").toString() } - private String getImageUrl(String imagePath) { - return amazonS3.getUrl(bucket, imagePath).toString(); + private fun getImageUrl(imagePath: String): String { + return amazonS3.getUrl(bucket, imagePath).toString() } } diff --git a/cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.kt b/cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.kt index 47d99371..f9ca957d 100644 --- a/cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.kt +++ b/cakk-external/src/main/java/com/cakk/external/vo/CertificationMessage.kt @@ -1,14 +1,13 @@ -package com.cakk.external.vo; +package com.cakk.external.vo -public record CertificationMessage( - String businessRegistrationImageUrl, - String idCardImageUrl, - String emergencyContact, - String message, - Long userId, - String userEmail, - String shopName, - Double latitude, - Double longitude -) { -} +data class CertificationMessage( + val businessRegistrationImageUrl: String, + val idCardImageUrl: String, + val emergencyContact: String, + val message: String, + val userId: Long, + val userEmail: String, + val shopName: String, + val latitude: Double, + val longitude: Double +) diff --git a/cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.kt b/cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.kt index d4d0d3ca..5f32f870 100644 --- a/cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.kt +++ b/cakk-external/src/main/java/com/cakk/external/vo/PresignedUrl.kt @@ -1,8 +1,7 @@ -package com.cakk.external.vo; +package com.cakk.external.vo -public record PresignedUrl( - String imagePath, - String imageUrl, - String presignedUrl -) { -} +data class PresignedUrl( + val imagePath: String, + val imageUrl: String, + val presignedUrl: String +) From 245fba95b0f0b59d16a18417eec789e869bf5b6a Mon Sep 17 00:00:00 2001 From: lcomment Date: Mon, 2 Sep 2024 17:44:56 +0900 Subject: [PATCH 3/3] =?UTF-8?q?Test=20|=20CAKK-62=20|=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cakk/api/controller/AwsS3ControllerTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cakk-api/src/test/java/com/cakk/api/controller/AwsS3ControllerTest.java b/cakk-api/src/test/java/com/cakk/api/controller/AwsS3ControllerTest.java index c46d9d17..49c73957 100644 --- a/cakk-api/src/test/java/com/cakk/api/controller/AwsS3ControllerTest.java +++ b/cakk-api/src/test/java/com/cakk/api/controller/AwsS3ControllerTest.java @@ -26,8 +26,8 @@ void getImageUrl() throws Exception { // when & then mockMvc.perform(get("/aws/img")) .andExpect(status().isOk()) - .andExpect(jsonPath("$.data.imagePath").value(presignedUrl.imagePath())) - .andExpect(jsonPath("$.data.imageUrl").value(presignedUrl.imageUrl())) - .andExpect(jsonPath("$.data.presignedUrl").value(presignedUrl.presignedUrl())); + .andExpect(jsonPath("$.data.imagePath").value(presignedUrl.getImagePath())) + .andExpect(jsonPath("$.data.imageUrl").value(presignedUrl.getImageUrl())) + .andExpect(jsonPath("$.data.presignedUrl").value(presignedUrl.getPresignedUrl())); } }