dev add tariff info and control
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-05-28 12:44:51 +07:00
parent ea33e9cfe3
commit 6f2d8320dc
@@ -1,6 +1,5 @@
package ru.soune.nocopy.controller; package ru.soune.nocopy.controller;
import com.google.common.io.ByteStreams;
import com.vrt.NoCopyFileService; import com.vrt.NoCopyFileService;
import com.vrt.fileprotection.FileProtector; import com.vrt.fileprotection.FileProtector;
import com.vrt.fileprotection.NoCopyCheckResult; import com.vrt.fileprotection.NoCopyCheckResult;
@@ -8,6 +7,8 @@ import com.vrt.fileprotection.audio.AudioCheckResult;
import com.vrt.fileprotection.documents.DocumentCheckResult; import com.vrt.fileprotection.documents.DocumentCheckResult;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault; import org.springframework.data.web.PageableDefault;
@@ -16,7 +17,6 @@ import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError; import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
import ru.soune.nocopy.dto.BaseRequest; import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse; import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode; import ru.soune.nocopy.dto.MessageCode;
@@ -47,7 +47,6 @@ import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@@ -164,7 +163,7 @@ public class ApiController {
} }
@GetMapping("/internal/data-download/{fileId}") @GetMapping("/internal/data-download/{fileId}")
public ResponseEntity<StreamingResponseBody> getPublicFile(@PathVariable String fileId) { public ResponseEntity<Resource> getPublicFile(@PathVariable String fileId) {
try { try {
FileEntity fileEntity = fileEntityRepository.findById(fileId) FileEntity fileEntity = fileEntityRepository.findById(fileId)
.orElseThrow(() -> new FileNotFoundException("Not found in DB: " + fileId)); .orElseThrow(() -> new FileNotFoundException("Not found in DB: " + fileId));
@@ -175,20 +174,14 @@ public class ApiController {
.filename(fileEntity.getOriginalFileName(), StandardCharsets.UTF_8) .filename(fileEntity.getOriginalFileName(), StandardCharsets.UTF_8)
.build(); .build();
StreamingResponseBody responseBody = outputStream -> { InputStream inputStream = cloudStorageService.readFileFromStorage(fileEntity.getFilePath());
try (InputStream inputStream = cloudStorageService.readFileFromStorage(fileEntity.getFilePath())) { InputStreamResource resource = new InputStreamResource(inputStream);
ByteStreams.copy(inputStream, outputStream);
} catch (NoSuchKeyException e) {
log.error("File disappeared from S3 during streaming: {}", fileId, e);
throw new IOException("File not found in storage", e);
}
};
return ResponseEntity.ok() return ResponseEntity.ok()
.contentType(mediaType) .contentType(mediaType)
.header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString()) .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString())
.header(HttpHeaders.CACHE_CONTROL, "public, max-age=3600") .header(HttpHeaders.CACHE_CONTROL, "public, max-age=3600")
.body(responseBody); .body(resource);
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
log.warn("File not found in DB: {}", fileId); log.warn("File not found in DB: {}", fileId);
return ResponseEntity.notFound().build(); return ResponseEntity.notFound().build();
@@ -201,7 +194,6 @@ public class ApiController {
} }
} }
@PostMapping("/internal/data-control") @PostMapping("/internal/data-control")
public ResponseEntity<?> handleInternalControlPostRequest(@RequestBody BaseRequest request) { public ResponseEntity<?> handleInternalControlPostRequest(@RequestBody BaseRequest request) {
Integer msgId = request.getMsgId(); Integer msgId = request.getMsgId();