From 31fac0ab935630c03a4399f024f73e6442a32125 Mon Sep 17 00:00:00 2001 From: vladp Date: Wed, 28 Jan 2026 21:18:42 +0700 Subject: [PATCH] dev check to protect --- .../nocopy/controller/ApiController.java | 4 +-- .../java/ru/soune/nocopy/dto/MessageCode.java | 4 ++- .../nocopy/handler/FileEntityHandler.java | 30 +++++++++++++++++-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/controller/ApiController.java b/src/main/java/ru/soune/nocopy/controller/ApiController.java index d740319..6cf5156 100644 --- a/src/main/java/ru/soune/nocopy/controller/ApiController.java +++ b/src/main/java/ru/soune/nocopy/controller/ApiController.java @@ -401,14 +401,14 @@ public class ApiController { public ResponseEntity check(@PathVariable(required = false) String fileId, @PathVariable(required = false) String type) { Optional optionalFileEntity = fileEntityRepository.findById(fileId); + if (!optionalFileEntity.isPresent()) { return ResponseEntity.notFound().build(); } FileEntity fileEntity = optionalFileEntity.get(); - Path path = type.toLowerCase().equals("image") ? Paths.get(fileEntity.getFilePath()) : - Paths.get(fileEntity.getProtectedFilePath()); + Path path = Paths.get(fileEntity.getProtectedFilePath()); File file = path.toFile(); diff --git a/src/main/java/ru/soune/nocopy/dto/MessageCode.java b/src/main/java/ru/soune/nocopy/dto/MessageCode.java index 8c5168d..1027f5a 100644 --- a/src/main/java/ru/soune/nocopy/dto/MessageCode.java +++ b/src/main/java/ru/soune/nocopy/dto/MessageCode.java @@ -27,7 +27,9 @@ public enum MessageCode { FILE_NOT_FOUND(4, "File not found"), AUTH_PASSWORD_NOT_MATCHES(2, "Password does not match"), SEND_EMAIL_EXCEPTION(2, "Send email exception"), - SIMILAR_FILES_FOUND(0, "Similar files found"); + SIMILAR_FILES_FOUND(0, "Similar files found"), + FILE_IS_PROTECTED(0, "File is protected"), + FILE_IS_NOT_PROTECTED(0, "File is not protected"); private final Integer code; diff --git a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java index 3e925e5..3a1f56e 100644 --- a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java @@ -8,16 +8,17 @@ import ru.soune.nocopy.dto.*; import ru.soune.nocopy.dto.file.*; import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.file.FileStatus; +import ru.soune.nocopy.entity.file.ProtectionStatus; import ru.soune.nocopy.exception.FileEntityNotFoundException; import ru.soune.nocopy.exception.NotFoundAuthToken; import ru.soune.nocopy.repository.FileEntityRepository; -import ru.soune.nocopy.repository.ImageHashRepository; import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.file.FileEntityService; import ru.soune.nocopy.service.file.FileStatsService; import java.util.Arrays; import java.util.List; +import java.util.Optional; @Slf4j @Component @@ -34,8 +35,6 @@ public class FileEntityHandler implements RequestHandler { private final FileEntityRepository fileEntityRepository; - private final ImageHashRepository imageHashRepository; - @Override public BaseResponse handle(BaseRequest request) { try { @@ -57,6 +56,8 @@ public class FileEntityHandler implements RequestHandler { return handleSearchFiles(request, fileRequest); case "storage_usage": return handleGetStorageUsage(request, fileRequest); + case "check_protected": + return handleProtectFile(request, fileRequest); case "delete_file": return handleDeleteFile(request, fileRequest); default: @@ -259,6 +260,29 @@ public class FileEntityHandler implements RequestHandler { } } + private BaseResponse handleProtectFile(BaseRequest request, FileEntityRequest fileRequest) { + String fileId = fileRequest.getFileId(); + Optional optionalFileEntity = fileEntityRepository.findById(fileId); + + if (optionalFileEntity.isEmpty()) { + return new BaseResponse(request.getMsgId(), + MessageCode.FILE_NOT_FOUND.getCode(), + "File not found exception: " + fileRequest.getFileId(), + null); + } + + FileEntity fileEntity = optionalFileEntity.get(); + ProtectionStatus protectionStatus = fileEntity.getProtectionStatus(); + + Integer code = protectionStatus == ProtectionStatus.PROTECTED ? MessageCode.FILE_IS_PROTECTED.getCode(): + MessageCode.FILE_IS_NOT_PROTECTED.getCode(); + String message = protectionStatus == ProtectionStatus.PROTECTED ? MessageCode.FILE_IS_PROTECTED.getDescription(): + MessageCode.FILE_IS_NOT_PROTECTED.getDescription(); + + return new BaseResponse(request.getMsgId(), code, message, fileEntityService.getById(fileId, + request.getVersion())); + } + private BaseResponse handleDeleteFile(BaseRequest request, FileEntityRequest fileRequest) { try { Long userId = authService.useUserAuthToken(fileRequest.getToken());