Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 13 additions & 22 deletions src/main/java/ai/tecton/client/transport/TectonHttpClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.ConnectionPool;
Expand All @@ -32,7 +31,6 @@
import org.apache.commons.lang3.Validate;

public class TectonHttpClient {

private HttpUrl url;
private final String apiKey;
private final OkHttpClient client;
Expand Down Expand Up @@ -96,7 +94,7 @@ public boolean isClosed() {
public HttpResponse performRequest(String endpoint, HttpMethod method, String requestBody) {
HttpRequest httpRequest =
new HttpRequest(url.url().toString(), endpoint, method, apiKey, requestBody);
Request request = buildRequestWithDefaultHeaders(httpRequest);
Request request = buildRequestWithDefaultHeaders(httpRequest, 0);
Call call = client.newCall(request);
try (Response response = call.execute()) {
return new HttpResponse(response);
Expand All @@ -113,13 +111,12 @@ public List<HttpResponse> performParallelRequests(

// Map request body to OkHttp Request
// ordering of requests is maintained
List<Request> requestList =
requestBodyList.stream()
.map(
requestBody ->
new HttpRequest(url.url().toString(), endpoint, method, apiKey, requestBody))
.map(this::buildRequestWithDefaultHeaders)
.collect(Collectors.toList());
List<Request> requestList = new ArrayList<>();
for (int i = 0; i < requestBodyList.size(); i++) {
HttpRequest httpRequest =
new HttpRequest(url.url().toString(), endpoint, method, apiKey, requestBodyList.get(i));
requestList.add(buildRequestWithDefaultHeaders(httpRequest, i));
}

// Initialize a countdown latch for numberOfCalls.
CountDownLatch countDownLatch = new CountDownLatch(requestBodyList.size());
Expand All @@ -141,7 +138,7 @@ public void onResponse(Call call, Response response) {
try (ResponseBody responseBody = response.body()) {
// Add response to corresponding index
parallelCallHandler.set(
requestList.indexOf(call.request()), new HttpResponse(response, responseBody));
(Integer) call.request().tag(), new HttpResponse(response, responseBody));
} catch (Exception e) {
throw new TectonServiceException(e.getMessage());
} finally {
Expand Down Expand Up @@ -171,7 +168,7 @@ public void onResponse(Call call, Response response) {
}
}

public Request buildRequestWithDefaultHeaders(HttpRequest httpRequest) {
public Request buildRequestWithDefaultHeaders(HttpRequest httpRequest, int index) {
// Construct url
Request.Builder requestBuilder = new Request.Builder().url(httpRequest.getUrl());

Expand All @@ -183,16 +180,10 @@ public Request buildRequestWithDefaultHeaders(HttpRequest httpRequest) {
requestBuilder.header(HttpHeader.AUTHORIZATION.getName(), apiKeyHeader);

// Add request body
switch (httpRequest.getMethod()) {
case POST:
default:
{
okhttp3.MediaType mediaType =
okhttp3.MediaType.parse(MediaType.APPLICATION_JSON.getName());
RequestBody requestBody = RequestBody.create(httpRequest.getJsonBody(), mediaType);
requestBuilder.post(requestBody);
}
}
okhttp3.MediaType mediaType = okhttp3.MediaType.parse(MediaType.APPLICATION_JSON.getName());
RequestBody requestBody = RequestBody.create(httpRequest.getJsonBody(), mediaType);
requestBuilder.post(requestBody);
requestBuilder.tag(index);
return requestBuilder.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public void testDefaultTectonRequest() {
HttpRequest httpRequest =
new HttpRequest(url, endpoint, TectonHttpClient.HttpMethod.POST, apiKey, body);

Request request = httpClient.buildRequestWithDefaultHeaders(httpRequest);
Request request = httpClient.buildRequestWithDefaultHeaders(httpRequest, 0);
Assert.assertNotNull(request);

Assert.assertEquals(POST, request.method());
Expand Down