dev check to protect
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-01-28 21:18:42 +07:00
parent a32f089989
commit 31fac0ab93
3 changed files with 32 additions and 6 deletions
@@ -401,14 +401,14 @@ public class ApiController {
public ResponseEntity<?> check(@PathVariable(required = false) String fileId, public ResponseEntity<?> check(@PathVariable(required = false) String fileId,
@PathVariable(required = false) String type) { @PathVariable(required = false) String type) {
Optional<FileEntity> optionalFileEntity = fileEntityRepository.findById(fileId); Optional<FileEntity> optionalFileEntity = fileEntityRepository.findById(fileId);
if (!optionalFileEntity.isPresent()) { if (!optionalFileEntity.isPresent()) {
return ResponseEntity.notFound().build(); return ResponseEntity.notFound().build();
} }
FileEntity fileEntity = optionalFileEntity.get(); FileEntity fileEntity = optionalFileEntity.get();
Path path = type.toLowerCase().equals("image") ? Paths.get(fileEntity.getFilePath()) : Path path = Paths.get(fileEntity.getProtectedFilePath());
Paths.get(fileEntity.getProtectedFilePath());
File file = path.toFile(); File file = path.toFile();
@@ -27,7 +27,9 @@ public enum MessageCode {
FILE_NOT_FOUND(4, "File not found"), FILE_NOT_FOUND(4, "File not found"),
AUTH_PASSWORD_NOT_MATCHES(2, "Password does not match"), AUTH_PASSWORD_NOT_MATCHES(2, "Password does not match"),
SEND_EMAIL_EXCEPTION(2, "Send email exception"), 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; private final Integer code;
@@ -8,16 +8,17 @@ import ru.soune.nocopy.dto.*;
import ru.soune.nocopy.dto.file.*; import ru.soune.nocopy.dto.file.*;
import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.file.FileEntity;
import ru.soune.nocopy.entity.file.FileStatus; 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.FileEntityNotFoundException;
import ru.soune.nocopy.exception.NotFoundAuthToken; import ru.soune.nocopy.exception.NotFoundAuthToken;
import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.repository.ImageHashRepository;
import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.file.FileEntityService; import ru.soune.nocopy.service.file.FileEntityService;
import ru.soune.nocopy.service.file.FileStatsService; import ru.soune.nocopy.service.file.FileStatsService;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Optional;
@Slf4j @Slf4j
@Component @Component
@@ -34,8 +35,6 @@ public class FileEntityHandler implements RequestHandler {
private final FileEntityRepository fileEntityRepository; private final FileEntityRepository fileEntityRepository;
private final ImageHashRepository imageHashRepository;
@Override @Override
public BaseResponse handle(BaseRequest request) { public BaseResponse handle(BaseRequest request) {
try { try {
@@ -57,6 +56,8 @@ public class FileEntityHandler implements RequestHandler {
return handleSearchFiles(request, fileRequest); return handleSearchFiles(request, fileRequest);
case "storage_usage": case "storage_usage":
return handleGetStorageUsage(request, fileRequest); return handleGetStorageUsage(request, fileRequest);
case "check_protected":
return handleProtectFile(request, fileRequest);
case "delete_file": case "delete_file":
return handleDeleteFile(request, fileRequest); return handleDeleteFile(request, fileRequest);
default: default:
@@ -259,6 +260,29 @@ public class FileEntityHandler implements RequestHandler {
} }
} }
private BaseResponse handleProtectFile(BaseRequest request, FileEntityRequest fileRequest) {
String fileId = fileRequest.getFileId();
Optional<FileEntity> 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) { private BaseResponse handleDeleteFile(BaseRequest request, FileEntityRequest fileRequest) {
try { try {
Long userId = authService.useUserAuthToken(fileRequest.getToken()); Long userId = authService.useUserAuthToken(fileRequest.getToken());