update controller chunk endpoints
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2025-12-17 22:31:30 +07:00
parent 11a7ab6a73
commit a030837d45
21 changed files with 740 additions and 163 deletions
@@ -0,0 +1,66 @@
package ru.soune.nocopy.handler.validator;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import ru.soune.nocopy.dto.file.FileUploadRequest;
import ru.soune.nocopy.entity.file.FileType;
import java.util.Arrays;
@Component
public class FileUploadRequestValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return FileUploadRequest.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
FileUploadRequest request = (FileUploadRequest) target;
validateType(request.getFileType(), errors);
validateFileName(request.getFileName(), errors);
validateExtension(request.getExtension(), errors);
}
private void validateType(String fileType, Errors errors) {
if (fileType == null || fileType.isBlank()) {
errors.rejectValue("fileType", "fileType.required", "File type is required");
return;
}
try {
FileType.valueOf(fileType.toUpperCase());
} catch (IllegalArgumentException e) {
errors.rejectValue("fileType", "fileType.invalid",
"Invalid file type. Valid types: " + Arrays.toString(FileType.values()));
}
}
private void validateFileName(String fileName, Errors errors) {
if (fileName == null || fileName.isBlank()) {
errors.rejectValue("fileName", "fileName.required", "File name is required");
return;
}
if (fileName.length() > 255) {
errors.rejectValue("fileName", "fileName.too.long",
"File name too long, max 255 characters");
}
}
private void validateExtension(String extension, Errors errors) {
if (extension == null || extension.isBlank()) {
errors.rejectValue("extension", "extension.required", "Extension is required");
return;
}
if (!extension.startsWith(".")) {
errors.rejectValue("extension", "extension.invalid.format",
"Extension must start with '.'");
return;
}
}
}