001 002package io.vrap.rmf.base.client.http; 003 004import java.util.concurrent.CompletableFuture; 005 006import io.vrap.rmf.base.client.*; 007 008/** 009 * Handler to execute the given request using a HTTP client 010 */ 011public class HttpHandler extends AutoCloseableService implements VrapHttpClient { 012 private final VrapHttpClient httpClient; 013 014 public HttpHandler(final VrapHttpClient httpClient) { 015 this.httpClient = httpClient; 016 } 017 018 public static HttpHandler create(final VrapHttpClient httpClient) { 019 return new HttpHandler(httpClient); 020 } 021 022 public CompletableFuture<ApiHttpResponse<byte[]>> execute(final ApiHttpRequest apiHttpRequest) { 023 return httpClient.execute(apiHttpRequest) 024 .thenApply(response -> response.withContextMap(apiHttpRequest.getContextMap())); 025 } 026 027 @Override 028 protected void internalClose() { 029 if (httpClient instanceof AutoCloseable) 030 closeQuietly((AutoCloseable) httpClient); 031 } 032}