Add file info public
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-06-01 16:56:19 +07:00
parent bc26b39d86
commit de32f9b4d1
@@ -1,6 +1,5 @@
package ru.soune.nocopy.controller; package ru.soune.nocopy.controller;
import com.google.api.client.util.IOUtils;
import com.google.common.io.ByteStreams; import com.google.common.io.ByteStreams;
import com.vrt.NoCopyFileService; import com.vrt.NoCopyFileService;
import com.vrt.fileprotection.FileProtector; import com.vrt.fileprotection.FileProtector;
@@ -12,28 +11,23 @@ import org.springframework.http.*;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
import ru.soune.nocopy.dto.file.CheckStatus; import ru.soune.nocopy.dto.file.CheckStatus;
import ru.soune.nocopy.dto.file.FileEntityResponse;
import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.file.FileEntity;
import ru.soune.nocopy.entity.file.ProtectionStatus; import ru.soune.nocopy.entity.file.ProtectionStatus;
import ru.soune.nocopy.entity.user.ProtectedFileCheck; import ru.soune.nocopy.entity.user.ProtectedFileCheck;
import ru.soune.nocopy.entity.user.User; import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.file.CheckCounterService; import ru.soune.nocopy.service.file.*;
import ru.soune.nocopy.service.file.FileStorageService;
import ru.soune.nocopy.service.file.ImageResizeService;
import ru.soune.nocopy.service.file.ZipService;
import ru.soune.nocopy.service.file.cloud.CloudStorageService; import ru.soune.nocopy.service.file.cloud.CloudStorageService;
import ru.soune.nocopy.util.FileUtil; import ru.soune.nocopy.util.FileUtil;
import software.amazon.awssdk.services.mq.model.NotFoundException;
import software.amazon.awssdk.services.s3.model.NoSuchKeyException; import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
import java.io.*; import java.io.*;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@RestController @RestController
@RequestMapping("/api/files") @RequestMapping("/api/files")
@Slf4j @Slf4j
@@ -48,7 +42,7 @@ public class FileController {
private UserRepository userRepository; private UserRepository userRepository;
private ImageResizeService imageResizeService; private final FileEntityService fileEntityService;
private NoCopyFileService noCopyFileService; private NoCopyFileService noCopyFileService;
@@ -96,6 +90,24 @@ public class FileController {
} }
} }
@GetMapping("/public/file-info/{fileId}")
public ResponseEntity<FileEntityResponse> getPublicFileInfo(@PathVariable String fileId) {
return handleGetFileInfo(fileId);
}
private ResponseEntity<FileEntityResponse> handleGetFileInfo(String fileId) {
try {
FileEntityResponse fileInfo = fileEntityService.getById(fileId, 1);
return ResponseEntity
.ok()
.body(fileInfo);
} catch (NotFoundException e) {
return ResponseEntity
.notFound().build();
}
}
private MediaType getMediaType(FileEntity fileEntity) { private MediaType getMediaType(FileEntity fileEntity) {
try { try {
return MediaType.parseMediaType(fileEntity.getMimeType()); return MediaType.parseMediaType(fileEntity.getMimeType());
@@ -124,13 +136,6 @@ public class FileController {
String filePath = type.equals("thumbnail") ? fileEntity.getThumbnailPath(): fileEntity.getFilePath(); String filePath = type.equals("thumbnail") ? fileEntity.getThumbnailPath(): fileEntity.getFilePath();
// InputStream file = cloudStorageService.readFileFromStorage(filePath);
// if (file == null || !file.exists()) {
// log.error("File not found in storage: {}", fileEntity.getFilePath());
// return ResponseEntity.notFound().build();
// }
if (fileEntity.getProtectionStatus() == ProtectionStatus.NOT_PROTECTED || if (fileEntity.getProtectionStatus() == ProtectionStatus.NOT_PROTECTED ||
fileEntity.getProtectionStatus() == ProtectionStatus.PROCESSING) { fileEntity.getProtectionStatus() == ProtectionStatus.PROCESSING) {
throw new RuntimeException("File is not protected"); throw new RuntimeException("File is not protected");