NCBACK-162
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-05-29 18:17:04 +07:00
parent bc26b39d86
commit 5e494ffc4b
60 changed files with 670 additions and 837 deletions
@@ -5,11 +5,10 @@ import com.vrt.fileprotection.FileProtector;
import com.vrt.fileprotection.NoCopyCheckResult;
import com.vrt.fileprotection.audio.AudioCheckResult;
import com.vrt.fileprotection.documents.DocumentCheckResult;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
@@ -42,8 +41,6 @@ import ru.soune.nocopy.service.file.*;
import ru.soune.nocopy.service.file.CheckCounterService;
import ru.soune.nocopy.service.file.ProtectionsLimitService;
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.util.FileUtil;
import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
import java.io.File;
@@ -67,9 +64,9 @@ public class ApiController {
private final Map<Integer, RequestHandler> internalControlHandler;
private final FileEntityService fileEntityService;
private final Map<Integer, RequestHandler> authHandler;
private final AuthService authService;
private final FileEntityService fileEntityService;
private final FileSimilarityService fileSimilarityService;
@@ -77,7 +74,7 @@ public class ApiController {
private final NoCopyFileService noCopyFileService;
private final FileUtil fileUtil;
private final HttpServletRequest httpServletRequest;
private final ProtectionsLimitService protectionsLimitService;
@@ -134,6 +131,46 @@ public class ApiController {
}
}
@PostMapping("/auth")
public ResponseEntity<?> handlePostRequest(@RequestBody BaseRequest request) {
Integer msgId = request.getMsgId();
BaseResponse response;
try {
RequestHandler handler = authHandler.get(msgId);
if (handler == null) {
response = new BaseResponse(msgId,
MessageCode.MSG_ID_NOT_FOUND.getCode(),
MessageCode.MSG_ID_NOT_FOUND.getDescription(),
new HashMap<>());
} else {
response = handler.handle(request);
}
return ResponseEntity.ok().body(response);
} catch (ValidationException e) {
return createValidationErrorResponse(e.getBindingResult(), e.getMsgId());
} catch (UserNotFoundException e) {
return ResponseEntity.ok().body(new BaseResponse(msgId, MessageCode.USER_NOT_FOUND.getCode(),
MessageCode.USER_NOT_FOUND.getDescription(), new HashMap<>()));
} catch (NotFoundAuthToken e) {
return ResponseEntity.ok().body(new BaseResponse(msgId, MessageCode.AUTH_TOKEN_NOT_FOUND.getCode(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getDescription(), new HashMap<>()));
} catch (NotValidFieldException e) {
throw e;
} catch (Exception e) {
log.error("Handler execution failed for msgId: {}", msgId, e);
BaseResponse errorResponse = new BaseResponse(msgId,
MessageCode.INVALID_JSON_BODY.getCode(),
MessageCode.INVALID_JSON_BODY.getDescription(),
new HashMap<>());
return ResponseEntity.ok().body(errorResponse);
}
}
@PostMapping("/internal/data-info")
public ResponseEntity<?> handleInternalInfoPostRequest(@RequestBody BaseRequest request) {
Integer msgId = request.getMsgId();
@@ -276,8 +313,7 @@ public class ApiController {
@RequestParam(value = "upload_id", required = false) String uploadId,
@RequestParam(value = "chunk_number", required = false) Integer chunkNumber,
@RequestParam(value = "chunk", required = false) MultipartFile chunk,
@RequestParam(value = "last_file", required = false) Boolean last_file,
@RequestParam(value = "token") String token) {
@RequestParam(value = "last_file", required = false) Boolean last_file) {
try {
if (chunk == null || chunk.isEmpty()) {
return buildErrorResponse(uploadId, chunkNumber, "Chunk file null or empty");
@@ -289,7 +325,7 @@ public class ApiController {
return buildErrorResponse(uploadId, chunkNumber, "Valid chunk number is required");
}
Long userId = authService.useUserAuthToken(token);
Long userId = (Long) httpServletRequest.getAttribute("userId");
UploadProgressResponse uploadProgressResponse = fileUploadService.uploadPassportChunk(uploadId, chunkNumber,
chunk, userId);
@@ -588,7 +624,7 @@ public class ApiController {
errorData));
}
Long userId = authService.useUserAuthToken(tokenHeader);
Long userId = (Long) httpServletRequest.getAttribute("userId");
FileEntityResponse entityResponse = fileEntityService.getById(fileId, version);
FileStatus status = entityResponse.getStatus();
@@ -676,8 +712,8 @@ public class ApiController {
@PostMapping("/file/link")
public ResponseEntity<?> downloadFile(@RequestBody DocViewerRequest viewerRequest) {
try {
String tokenHeader = viewerRequest.getToken();
Long userId = tokenHeader == null ? 0L: authService.useUserAuthToken(tokenHeader);
Long userId = httpServletRequest.getAttribute("userId") == null ? 0L:
(Long) httpServletRequest.getAttribute("userId");
if (viewerRequest.getFileId() == null) {
return ResponseEntity.ok().body(new BaseResponse(0,