Skip to content

Commit dc2f5b4

Browse files
committed
refactor: 기존 presigned-url 발급 로직을 업로드용, 조회용으로 분리
1 parent 4d341f8 commit dc2f5b4

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

src/main/java/com/oronaminc/join/document/api/DocumentController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ public DocumentResponse generatePresignedUrl(
3737
@AuthenticationPrincipal MemberDetails memberDetails
3838
) {
3939
String memberRole = memberDetails.getRole();
40-
return documentService.generatePresignedUrl(documentRequest, memberRole);
40+
return documentService.generateUploadPresignedUrl(documentRequest, memberRole);
4141
}
4242
}

src/main/java/com/oronaminc/join/document/service/DocumentService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void deleteByRoomId(Long roomId) {
3737
documentRepository.deleteByRoomId(roomId);
3838
}
3939

40-
public DocumentResponse generatePresignedUrl(DocumentRequest request, String memberRole) {
40+
public DocumentResponse generateUploadPresignedUrl(DocumentRequest request, String memberRole) {
4141
if (!memberRole.equals(MemberType.MEMBER.name())) {
4242
throw new ErrorException(ErrorCode.UNAUTHORIZED_MEMBER);
4343
}
@@ -52,7 +52,7 @@ public DocumentResponse generatePresignedUrl(DocumentRequest request, String mem
5252

5353
String uuid = UUID.randomUUID().toString();
5454
String objectKey = "temp/" + uuid + extension;
55-
String presignedUrl = s3Service.generatePresignedUrl(objectKey);
55+
String presignedUrl = s3Service.generateUploadPresignedUrl(objectKey);
5656

5757
return new DocumentResponse(presignedUrl, objectKey);
5858
}

src/main/java/com/oronaminc/join/infra/service/S3Service.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import software.amazon.awssdk.services.s3.presigner.S3Presigner;
1212
import software.amazon.awssdk.services.s3.presigner.model.GetObjectPresignRequest;
1313
import software.amazon.awssdk.services.s3.presigner.model.PresignedGetObjectRequest;
14+
import software.amazon.awssdk.services.s3.presigner.model.PresignedPutObjectRequest;
15+
import software.amazon.awssdk.services.s3.presigner.model.PutObjectPresignRequest;
1416

1517
import java.time.Duration;
1618

@@ -25,7 +27,8 @@ public class S3Service {
2527
@Value("${cloud.aws.s3.bucket}")
2628
private String bucket;
2729

28-
public String generatePresignedUrl(String key) {
30+
// 조회용
31+
public String generateGetPresignedUrl(String key) {
2932
GetObjectRequest getObjectRequest = GetObjectRequest.builder()
3033
.bucket(bucket)
3134
.key(key)
@@ -41,6 +44,24 @@ public String generatePresignedUrl(String key) {
4144
return presignedRequest.url().toString();
4245
}
4346

47+
// 업로드용
48+
public String generateUploadPresignedUrl(String key) {
49+
PutObjectRequest putObjectRequest = PutObjectRequest.builder()
50+
.bucket(bucket)
51+
.contentType("application/pdf")
52+
.key(key)
53+
.build();
54+
55+
PutObjectPresignRequest presignRequest = PutObjectPresignRequest.builder()
56+
.signatureDuration(Duration.ofMinutes(3))
57+
.putObjectRequest(putObjectRequest)
58+
.build();
59+
60+
PresignedPutObjectRequest presignedRequest = s3Presigner.presignPutObject(presignRequest);
61+
62+
return presignedRequest.url().toString();
63+
}
64+
4465
public void deleteFile(String key) {
4566
try {
4667
if (isFileExist(key)) {

src/main/java/com/oronaminc/join/room/service/RoomService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public RoomDetailResponse getRoomDetail(Long memberId, Long roomId) {
9898
List<Participant> team = participantService.getTeam(roomId);
9999
Document document = documentReader.getByRoomId(roomId);
100100
int participantCount = currentParticipantManager.getRoomParticipants(roomId).size();
101-
String presignedUrl = s3Service.generatePresignedUrl(document.getFileUrl());
101+
String presignedUrl = s3Service.generateGetPresignedUrl(document.getFileUrl());
102102

103103
return RoomMapper.toRoomDetailResponse(room, presenter, team, presignedUrl, memberId, participantCount);
104104
}

0 commit comments

Comments
 (0)