in src/main/java/com/spotify/github/http/okhttp/OkHttpHttpClient.java [204:239]
public Call newCall(@NotNull final Request request) {
CompletableFuture<Response> future = new CompletableFuture<>();
Span span =
OkHttpHttpClient.this
.tracer
.span(buildHttpRequest(request))
.addTag(TraceHelper.TraceTags.HTTP_URL, request.url().toString());
OkHttpClient.Builder okBuilder = client.newBuilder();
// Add a network interceptor to trace the request
okBuilder
.networkInterceptors()
.add(
0,
new Interceptor() {
@NotNull
@Override
public Response intercept(@NotNull final Chain chain) throws IOException {
try {
Response response = chain.proceed(chain.request());
span.addTag(TraceHelper.TraceTags.HTTP_STATUS_CODE, response.code())
.addTag(TraceHelper.TraceTags.HTTP_STATUS_MESSAGE, response.message())
.success();
future.complete(response);
return response;
} catch (Exception ex) {
span.failure(ex);
future.completeExceptionally(ex);
throw ex;
} finally {
span.close();
}
}
});
return okBuilder.build().newCall(request);
}