Skip to content

Commit

Permalink
[hotfix] 드라이브 API 오류 해결
Browse files Browse the repository at this point in the history
드라이브 파일 조회 및 드라이브 휴지통 조회 오류 해결
  • Loading branch information
baekjaehyuk committed Jan 16, 2025
1 parent 9cfc8c0 commit a3155ef
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,9 @@ public class DriveTrashController {
public ApiResponse<List<FileResponse>> trashList(
@AuthMember Member member,
@Parameter(description = "내 드라이브는 PERSONAL, 공용 드라이브는 SHARED 입니다.")
@RequestParam DriveType driveType,
@Parameter(description = "폴더 경로입니다. 비어 있으면 루트 폴더로 지정됩니다.")
@RequestParam(required = false, defaultValue = "") String folderPath
@RequestParam DriveType driveType
) {
List<FileResponse> filesFromTrash = driveTrashService.getFilesFromTrash(member, driveType, folderPath);
List<FileResponse> filesFromTrash = driveTrashService.getFilesFromTrash(member, driveType);
return ApiResponse.success(filesFromTrash, 200, "조회 성공");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ public class DriveTrashService {
@Value("${cloud.aws.s3.bucket}")
private String bucketName;

public List<FileResponse> getFilesFromTrash(Member member, DriveType driveType, String folderPath) {
public List<FileResponse> getFilesFromTrash(Member member, DriveType driveType) {
Set<String> excludedPaths = new HashSet<>();
List<FileResponse> deletedFiles = new ArrayList<>();
String prefix = DriveUtil.buildPrefix(driveType, member, folderPath);
String prefix = DriveUtil.buildPrefix(driveType, member, "");

ListObjectVersionsRequest request = ListObjectVersionsRequest.builder()
.bucket(bucketName)
Expand All @@ -44,14 +45,18 @@ public List<FileResponse> getFilesFromTrash(Member member, DriveType driveType,
ListObjectVersionsResponse finalResponse = response;
response.deleteMarkers().forEach(deleteMarker -> {
String key = deleteMarker.key();
String deleteMarkerVersionId = deleteMarker.versionId();

String relativePath = key.substring(prefix.length());
for (String excludedPath : excludedPaths) {
if (key.startsWith(excludedPath)) {
return;
}
}

if (relativePath.contains("/") && relativePath.indexOf("/") != relativePath.length() - 1) {
return;
if (key.endsWith("/")) {
excludedPaths.add(key);
}

String deleteMarkerVersionId = deleteMarker.versionId();
Optional<ObjectVersion> previousVersionOpt = finalResponse.versions().stream()
.filter(version -> version.key().equals(key))
.filter(version -> !version.versionId().equals(deleteMarkerVersionId))
Expand Down Expand Up @@ -92,10 +97,6 @@ public List<FileResponse> getFilesFromTrash(Member member, DriveType driveType,

} while (response.isTruncated());

if (!folderPath.isEmpty()) {
deletedFiles.removeFirst();
}

return deletedFiles;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ private void addTagsToS3Object(String objectKey, Member member, String folderPat
String formattedDate = now.format(DateTimeFormatter.ISO_DATE_TIME);
String finalFolderPath = folderPath != null && !folderPath.trim().isEmpty() ? folderPath : "";

if (!finalFolderPath.isEmpty()) {
finalFolderPath = finalFolderPath + "/";
}

List<Tag> tags = List.of(
new Tag("folderPath", finalFolderPath),
new Tag("driveType", driveType.toString().toLowerCase()),
Expand Down

0 comments on commit a3155ef

Please sign in to comment.