diff --git a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java index 200c03122d1..22d341fd6bf 100644 --- a/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java +++ b/clients/algoliasearch-client-java/algoliasearch/src/main/java/com/algolia/internal/HttpRequester.java @@ -18,6 +18,7 @@ import okhttp3.*; import okhttp3.internal.http.HttpMethod; import okio.BufferedSink; +import com.algolia.utils.UseReadTransporter; /** * HttpRequester is responsible for making HTTP requests using the OkHttp client. It provides a @@ -72,7 +73,12 @@ private T execute(@Nonnull HttpRequest httpRequest, RequestOptions requestOp RequestBody requestBody = createRequestBody(httpRequest); // Build the HTTP request. - Request request = new Request.Builder().url(url).headers(headers).method(httpRequest.getMethod(), requestBody).build(); + Request.Builder requestBuilder = new Request.Builder().url(url).headers(headers).method(httpRequest.getMethod(), requestBody); + if (httpRequest.isRead()) { + requestBuilder.tag(new UseReadTransporter()); + } + + Request request = requestBuilder.build(); // Get or adjust the HTTP client according to request options. OkHttpClient client = getOkHttpClient(requestOptions); diff --git a/clients/algoliasearch-client-scala/src/main/scala/algoliasearch/internal/HttpRequester.scala b/clients/algoliasearch-client-scala/src/main/scala/algoliasearch/internal/HttpRequester.scala index 5b65d15a3e4..4c347488acf 100644 --- a/clients/algoliasearch-client-scala/src/main/scala/algoliasearch/internal/HttpRequester.scala +++ b/clients/algoliasearch-client-scala/src/main/scala/algoliasearch/internal/HttpRequester.scala @@ -4,6 +4,7 @@ import algoliasearch.config._ import algoliasearch.exception.{AlgoliaApiException, AlgoliaClientException} import algoliasearch.internal.interceptor.{GzipRequestInterceptor, HeaderInterceptor, LogInterceptor} import algoliasearch.internal.util.escape +import algoliasearch.internal.util.UseReadTransporter import okhttp3._ import okhttp3.internal.http.HttpMethod import okio.BufferedSink @@ -140,11 +141,12 @@ private[algoliasearch] class HttpRequester private ( val headers = createHeaders(httpRequest, requestOptions) val requestBody = createRequestBody(httpRequest) // Build the HTTP request. - val request = new Request.Builder() + val requestBuilder = new Request.Builder() .url(url) .headers(headers) .method(httpRequest.method, requestBody) - .build + if (httpRequest.read) requestBuilder.tag(UseReadTransporter) + val request = requestBuilder.build // Get or adjust the HTTP client according to request options. val client = okHttpClient(requestOptions) // Execute the request. diff --git a/templates/java/api.mustache b/templates/java/api.mustache index 195c0cf3bd4..e0849d80313 100644 --- a/templates/java/api.mustache +++ b/templates/java/api.mustache @@ -85,9 +85,9 @@ public class {{classname}} extends ApiClient { hosts.add(new Host(appId + ".algolia.net", EnumSet.of(CallType.WRITE))); List commonHosts = new ArrayList<>(); - hosts.add(new Host(appId + "-1.algolianet.net", EnumSet.of(CallType.READ, CallType.WRITE))); - hosts.add(new Host(appId + "-2.algolianet.net", EnumSet.of(CallType.READ, CallType.WRITE))); - hosts.add(new Host(appId + "-3.algolianet.net", EnumSet.of(CallType.READ, CallType.WRITE))); + commonHosts.add(new Host(appId + "-1.algolianet.net", EnumSet.of(CallType.READ, CallType.WRITE))); + commonHosts.add(new Host(appId + "-2.algolianet.net", EnumSet.of(CallType.READ, CallType.WRITE))); + commonHosts.add(new Host(appId + "-3.algolianet.net", EnumSet.of(CallType.READ, CallType.WRITE))); Collections.shuffle(commonHosts, new Random()); diff --git a/tests/CTS/client/search/api.json b/tests/CTS/client/search/api.json index dcae0480e1c..b90d7d13aec 100644 --- a/tests/CTS/client/search/api.json +++ b/tests/CTS/client/search/api.json @@ -23,6 +23,30 @@ } ] }, + { + "testName": "read transporter with POST method", + "autoCreateClient": false, + "steps": [ + { + "type": "createClient", + "parameters": { + "appId": "test-app-id", + "apiKey": "test-api-key" + } + }, + { + "type": "method", + "method": "searchSingleIndex", + "parameters": { + "indexName": "indexName" + }, + "expected": { + "type": "host", + "match": "test-app-id-dsn.algolia.net" + } + } + ] + }, { "testName": "calls api with correct write host", "autoCreateClient": false,