From fb36447ecb96264b13fa45cf7f908ce36328ebf0 Mon Sep 17 00:00:00 2001 From: "adel.kalimullin" Date: Fri, 27 Dec 2024 12:53:21 +0300 Subject: [PATCH] SUPPORT-8836:refactor --- .../ru/micord/ervu/av/response/AvResponse.java | 17 ----------------- .../ervu/av/service/FileUploadService.java | 14 ++++---------- .../av/service/ReceiveScanReportRetryable.java | 9 +++------ 3 files changed, 7 insertions(+), 33 deletions(-) delete mode 100644 src/main/java/ru/micord/ervu/av/response/AvResponse.java diff --git a/src/main/java/ru/micord/ervu/av/response/AvResponse.java b/src/main/java/ru/micord/ervu/av/response/AvResponse.java deleted file mode 100644 index 48e71ae..0000000 --- a/src/main/java/ru/micord/ervu/av/response/AvResponse.java +++ /dev/null @@ -1,17 +0,0 @@ -package ru.micord.ervu.av.response; - -import java.util.Map; - -/** - * @author r.latypov - */ -public record AvResponse(String completed, String created, Integer progress, - Map scan_result, String status, String[] verdicts) { - public record Scan(String started, String stopped, Threat[] threats, String verdict) { - public static final String VERDICT_CLEAN = "clean"; - public static final String VERDICT_INFECTED = "infected"; - - public record Threat(String name, String object) { - } - } -} diff --git a/src/main/java/ru/micord/ervu/av/service/FileUploadService.java b/src/main/java/ru/micord/ervu/av/service/FileUploadService.java index 52afb22..0599a63 100644 --- a/src/main/java/ru/micord/ervu/av/service/FileUploadService.java +++ b/src/main/java/ru/micord/ervu/av/service/FileUploadService.java @@ -5,7 +5,6 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Arrays; import java.util.concurrent.CompletableFuture; import com.google.gson.Gson; @@ -30,7 +29,6 @@ import ru.micord.ervu.av.exception.RetryableException; import ru.micord.ervu.av.kafka.dto.DownloadRequest; import ru.micord.ervu.av.kafka.dto.DownloadResponse; import ru.micord.ervu.av.kafka.dto.FileStatus; -import ru.micord.ervu.av.response.AvResponse; import ru.micord.ervu.av.s3.S3Service; /** @@ -38,6 +36,7 @@ import ru.micord.ervu.av.s3.S3Service; */ @Service public class FileUploadService { + private static final int INJECTED_CODE = 72; private static final Logger LOGGER = LoggerFactory.getLogger(FileUploadService.class); @Value("${av.check.enabled}") private boolean avCheckEnabled; @@ -84,16 +83,11 @@ public class FileUploadService { String downloadUrl = fileUrl.fileUrl(); fIleManager.downloadFile(downloadUrl, filePath); boolean isAvError = false; - boolean clean = true; - boolean infected = false; + int exitCode = 0; if (avCheckEnabled) { try { - AvResponse avResponse = receiveScanReportRetryable.checkFile(filePath); - clean = Arrays.stream(avResponse.verdicts()) - .anyMatch(verdict -> verdict.equalsIgnoreCase(AvResponse.Scan.VERDICT_CLEAN)); - infected = Arrays.stream(avResponse.verdicts()) - .anyMatch(verdict -> verdict.equalsIgnoreCase(AvResponse.Scan.VERDICT_INFECTED)); + exitCode = receiveScanReportRetryable.checkFile(filePath); } catch (FileUploadException | RetryableException e) { LOGGER.error(e.getMessage(), e); @@ -101,7 +95,7 @@ public class FileUploadService { } } - if (isAvError || infected || !clean) { + if (isAvError || exitCode == INJECTED_CODE) { downloadRequest.fileInfo().setFileUrl(null); FileStatus fileStatus = isAvError ? FileStatus.FILE_STATUS_11 : FileStatus.FILE_STATUS_02; downloadRequest.fileInfo().setFileStatus(fileStatus); diff --git a/src/main/java/ru/micord/ervu/av/service/ReceiveScanReportRetryable.java b/src/main/java/ru/micord/ervu/av/service/ReceiveScanReportRetryable.java index 679b05a..c74f03e 100644 --- a/src/main/java/ru/micord/ervu/av/service/ReceiveScanReportRetryable.java +++ b/src/main/java/ru/micord/ervu/av/service/ReceiveScanReportRetryable.java @@ -6,7 +6,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.nio.file.Path; -import com.google.gson.Gson; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; @@ -24,7 +23,6 @@ import org.springframework.retry.annotation.Retryable; import org.springframework.stereotype.Service; import ru.micord.ervu.av.exception.FileUploadException; import ru.micord.ervu.av.exception.RetryableException; -import ru.micord.ervu.av.response.AvResponse; /** * @author r.latypov @@ -38,12 +36,11 @@ public class ReceiveScanReportRetryable { @Retryable(retryFor = {RetryableException.class}, maxAttemptsExpression = "${av.retry.max.attempts.count}", backoff = @Backoff(delayExpression = "${av.retry.delay.milliseconds}")) - public AvResponse checkFile(Path filePath) throws RetryableException, FileUploadException { + public int checkFile(Path filePath) throws RetryableException, FileUploadException { File file = filePath.toFile(); try (CloseableHttpClient client = HttpClients.createDefault()) { URI uri = new URIBuilder(avRestAddress) - .addParameter("wait", "1") .build(); HttpPost post = new HttpPost(uri); HttpEntity entity = MultipartEntityBuilder.create() @@ -53,10 +50,10 @@ public class ReceiveScanReportRetryable { try (CloseableHttpResponse postResponse = client.execute(post)) { int postStatusCode = postResponse.getStatusLine().getStatusCode(); - String postResponseJson = EntityUtils.toString(postResponse.getEntity()); + String exitCode = EntityUtils.toString(postResponse.getEntity()); if (postStatusCode == HttpStatus.OK.value()) { - return new Gson().fromJson(postResponseJson, AvResponse.class); + return Integer.parseInt(exitCode); } else { throw new FileUploadException(