dev email send when tokens not found
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-03-31 14:43:34 +07:00
parent d7874aa37a
commit 69e758a710
3 changed files with 13 additions and 4 deletions
@@ -17,6 +17,7 @@ import ru.soune.nocopy.entity.file.ImageHashEntity;
import ru.soune.nocopy.entity.user.User; import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.DuplicateImageException; import ru.soune.nocopy.exception.DuplicateImageException;
import ru.soune.nocopy.repository.*; import ru.soune.nocopy.repository.*;
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
import ru.soune.nocopy.util.FileUtil; import ru.soune.nocopy.util.FileUtil;
import java.io.File; import java.io.File;
@@ -41,6 +42,8 @@ public class FileSimilarityService {
private final FileEntityRepository fileEntityRepository; private final FileEntityRepository fileEntityRepository;
private final CloudStorageService cloudStorageService;
@Value("${server.baseurl}") @Value("${server.baseurl}")
private String baseUrl; private String baseUrl;
@@ -198,8 +201,9 @@ public class FileSimilarityService {
private String calculateFileHash(String path) throws Exception { private String calculateFileHash(String path) throws Exception {
MessageDigest digest = MessageDigest.getInstance("SHA-256"); MessageDigest digest = MessageDigest.getInstance("SHA-256");
File file = cloudStorageService.readFileFromStorageByPath(path);
try (InputStream is = new FileInputStream(path)) { try (InputStream is = new FileInputStream(file)) {
byte[] buffer = new byte[8192]; byte[] buffer = new byte[8192];
int read; int read;
while ((read = is.read(buffer)) > 0) { while ((read = is.read(buffer)) > 0) {
@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.file.FileEntity;
import ru.soune.nocopy.entity.file.ImageHashEntity; import ru.soune.nocopy.entity.file.ImageHashEntity;
import ru.soune.nocopy.repository.ImageHashRepository; import ru.soune.nocopy.repository.ImageHashRepository;
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -22,8 +23,10 @@ public class ImageHashService {
private final ImageHashRepository repository; private final ImageHashRepository repository;
private final CloudStorageService cloudStorageService;
public Map<String, Long> calculateHash(Path imagePath) throws IOException { public Map<String, Long> calculateHash(Path imagePath) throws IOException {
File file = imagePath.toFile(); File file = cloudStorageService.readFileFromStorageByPath(imagePath.toString());
PHash pHash = PerceptualHashHelper.INSTANCE.generateDCTPerceptualHash(file); PHash pHash = PerceptualHashHelper.INSTANCE.generateDCTPerceptualHash(file);
@@ -333,7 +333,8 @@ public class FileUploadServiceImpl implements FileUploadService {
fileSimilarityService.hasDuplicatesByHash(finalFilePath ,session.getFileType(), fileSimilarityService.hasDuplicatesByHash(finalFilePath ,session.getFileType(),
session.getUserId()); session.getUserId());
File file = new File(finalFilePath); // File file = new File(finalFilePath);
File file = cloudStorageService.readFileFromStorageByPath(finalFilePath);
if (session.getFileType().startsWith("audio") && !isWavFile(file)) { if (session.getFileType().startsWith("audio") && !isWavFile(file)) {
session.setStatus(UploadStatus.FAILED); session.setStatus(UploadStatus.FAILED);
@@ -389,7 +390,7 @@ public class FileUploadServiceImpl implements FileUploadService {
fileEntity.getFilePath()); fileEntity.getFilePath());
if (status != FileStatus.TEMP) { if (status != FileStatus.TEMP) {
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity); FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity, session.getConvertTo());
noCopyFileService.addFile(fileInfo); noCopyFileService.addFile(fileInfo);
} }
@@ -532,6 +533,7 @@ public class FileUploadServiceImpl implements FileUploadService {
private void checkForDuplicatesSynchronously(String filePath) private void checkForDuplicatesSynchronously(String filePath)
throws IOException , DuplicateImageException { throws IOException , DuplicateImageException {
Path path = Paths.get(filePath); Path path = Paths.get(filePath);
Map<String, Long> hash = imageHashService.calculateHash(path); Map<String, Long> hash = imageHashService.calculateHash(path);
List<SimilarImageProjection> duplicates = fileSimilarityService.findDuplicatedByHash( List<SimilarImageProjection> duplicates = fileSimilarityService.findDuplicatedByHash(