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}