Skip to content

Commit 26d0828

Browse files
committed
Feat : uuid와 해상도를 전달하면 해상도를 검사하고 적절한 mpd파일을 반환하는 PresignedGetObjectRequest를 요청하도록 수정
1 parent 17ed108 commit 26d0828

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

back/src/main/java/com/back/domain/file/video/controller/VideoController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ public RsData<UploadUrlGetResponse> getUploadUrl(@RequestParam String filename)
3737

3838
@GetMapping("/videos/download")
3939
@Operation(summary = "다운로드용 URL 요청", description = "파일 다운로드를 위한 Presigned URL을 발급받습니다.")
40-
public RsData<DownLoadUrlGetResponse> getDownloadUrls(@RequestParam String objectKey) {
41-
PresignedUrlResponse downloadUrl = fileManager.getDownloadUrl(objectKey);
40+
public RsData<DownLoadUrlGetResponse> getDownloadUrls(@RequestParam String uuid, @RequestParam String resolution) {
41+
PresignedUrlResponse downloadUrl = fileManager.getDownloadUrl(uuid, resolution);
4242
DownLoadUrlGetResponse response = new DownLoadUrlGetResponse(downloadUrl.url().toString(), downloadUrl.expiresAt());
4343
return new RsData<>("200", "다운로드용 URL 요청완료", response);
4444
}

back/src/main/java/com/back/domain/file/video/service/FileManager.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88

99
import java.net.URL;
1010
import java.time.LocalDateTime;
11+
import java.util.Set;
1112
import java.util.UUID;
1213

1314
@Service
1415
@RequiredArgsConstructor
1516
public class FileManager {
1617
private final VideoService videoService;
1718
private final S3Service s3Service;
19+
private final Set<String> validResolutions = Set.of("480p", "720p", "1080p");
1820

1921
public PresignedUrlResponse getUploadUrl(String filename) {
2022
String contentType = validateAndGetContentType(filename);
@@ -53,8 +55,11 @@ private String validateAndGetContentType(String filename) {
5355
}
5456
}
5557

56-
public PresignedUrlResponse getDownloadUrl(String objectKey) {
58+
public PresignedUrlResponse getDownloadUrl(String uuid, String resolution) {
5759
Integer expires = 60;
60+
validateResolution(resolution);
61+
videoService.isExistByUuid(uuid);
62+
String objectKey = "transcoded/videos/" + uuid + "/" + resolution + "/manifest.mpd";
5863
URL url = s3Service.generateDownloadUrl(objectKey, expires);
5964
LocalDateTime expiresAt = LocalDateTime.now().plusMinutes(expires);
6065
return new PresignedUrlResponse(url, expiresAt);
@@ -68,4 +73,10 @@ public void updateVideoStatus(String videoId, String status) {
6873
videoService.createVideo(videoId, status, "/", 0);
6974
}
7075
}
76+
77+
public void validateResolution(String resolution) {
78+
if (!validResolutions.contains(resolution)) {
79+
throw new ServiceException("400", "지원하지 않는 해상도입니다: " + resolution);
80+
}
81+
}
7182
}

0 commit comments

Comments
 (0)