From 247e97cd7a57fcf551edd6d3b28f112d5451979a Mon Sep 17 00:00:00 2001 From: vladp Date: Sun, 22 Feb 2026 01:03:22 +0700 Subject: [PATCH] dev add another client for google and yandex --- .../service/search/SearchImageService.java | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/service/search/SearchImageService.java b/src/main/java/ru/soune/nocopy/service/search/SearchImageService.java index eafcc1e..b263bd0 100644 --- a/src/main/java/ru/soune/nocopy/service/search/SearchImageService.java +++ b/src/main/java/ru/soune/nocopy/service/search/SearchImageService.java @@ -28,10 +28,38 @@ public class SearchImageService { private final ObjectMapper objectMapper; - private final OkHttpClient httpClient; +// private final OkHttpClient httpClient; + private final OkHttpClient yandexHttpClient; + private final OkHttpClient googleHttpClient; + +// public SearchImageService() { +// this.httpClient = new OkHttpClient.Builder() +// .connectTimeout(18, TimeUnit.SECONDS) +// .writeTimeout(18, TimeUnit.SECONDS) +// .readTimeout(18, TimeUnit.SECONDS) +// .callTimeout(18, TimeUnit.SECONDS) +// .followRedirects(true) +// .followSslRedirects(true) +// .retryOnConnectionFailure(true) +// .connectionPool(new ConnectionPool(0, 1, TimeUnit.NANOSECONDS)) +// .build(); +// +// this.objectMapper = new ObjectMapper(); +// } public SearchImageService() { - this.httpClient = new OkHttpClient.Builder() + this.yandexHttpClient = new OkHttpClient.Builder() + .connectTimeout(18, TimeUnit.SECONDS) + .writeTimeout(18, TimeUnit.SECONDS) + .readTimeout(18, TimeUnit.SECONDS) + .callTimeout(18, TimeUnit.SECONDS) + .followRedirects(true) + .followSslRedirects(true) + .retryOnConnectionFailure(true) + .connectionPool(new ConnectionPool(0, 1, TimeUnit.NANOSECONDS)) + .build(); + + this.googleHttpClient = new OkHttpClient.Builder() .connectTimeout(18, TimeUnit.SECONDS) .writeTimeout(18, TimeUnit.SECONDS) .readTimeout(18, TimeUnit.SECONDS) @@ -103,6 +131,8 @@ public class SearchImageService { throw new IllegalStateException("SearchAPI key not configured"); } + OkHttpClient client = engine.contains("yandex_reverse_image") ? yandexHttpClient : googleHttpClient; + HttpUrl url = HttpUrl.parse("https://www.searchapi.io/api/v1/search") .newBuilder() .addQueryParameter("engine", engine) @@ -123,7 +153,7 @@ public class SearchImageService { for (int attempt = 1; attempt <= maxAttempts; attempt++) { long start = System.currentTimeMillis(); - try (Response response = httpClient.newCall(request).execute()) { + try (Response response = client.newCall(request).execute()) { long duration = System.currentTimeMillis() - start; log.info("Yandex response code={}, duration={}ms, attempt={}", response.code(), duration, attempt);