diff options
author | jonmv <venstad@gmail.com> | 2022-05-03 07:30:55 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-05-03 07:30:55 +0200 |
commit | 3592e408848787f75e721bf2d6f99f3f010f6610 (patch) | |
tree | 8a41d51e4bbc420bc1dbc65d76e79e3f8ab423d3 /http-utils | |
parent | e046ae79779261b09f85bcf4c04c906b83075775 (diff) |
Revert "Merge pull request #22394 from vespa-engine/revert-22374-jonmv/remove-last-controller-jersey-client"
This reverts commit e046ae79779261b09f85bcf4c04c906b83075775, reversing
changes made to d2066c0a0c04e2aa2ada12a5c85f5eae9ff65b02.
Diffstat (limited to 'http-utils')
-rw-r--r-- | http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java b/http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java new file mode 100644 index 00000000000..8ad9d63cd1a --- /dev/null +++ b/http-utils/src/main/java/ai/vespa/util/http/hc5/DefaultHttpClientBuilder.java @@ -0,0 +1,49 @@ +package ai.vespa.util.http.hc5; + +import org.apache.hc.client5.http.config.RequestConfig; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; +import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder; +import org.apache.hc.core5.http.ContentType; +import org.apache.hc.core5.http.HttpHeaders; +import org.apache.hc.core5.util.Timeout; + +import javax.net.ssl.SSLContext; +import java.time.Duration; +import java.util.Map; +import java.util.function.Supplier; + +/** + * Like {@link VespaHttpClientBuilder}, but with standard TLS based on provided SSL context. + * + * @author jonmv + */ +public class DefaultHttpClientBuilder { + + public static final Duration connectTimeout = Duration.ofSeconds(5); + public static final Duration socketTimeout = Duration.ofSeconds(5); + + private DefaultHttpClientBuilder() { } + + public static HttpClientBuilder create(SSLContext sslContext, String userAgent) { + return create(() -> sslContext, userAgent); + } + + /** Creates an HTTP client builder with the given SSL context, and using the provided timeouts for requests where config is not overridden. */ + public static HttpClientBuilder create(Supplier<SSLContext> sslContext, String userAgent) { + return HttpClientBuilder.create() + .setConnectionManager(PoolingHttpClientConnectionManagerBuilder + .create() + .setSSLSocketFactory(SSLConnectionSocketFactoryBuilder + .create() + .setSslContext(sslContext.get()) + .build()) + .build()) + .setUserAgent(userAgent) + .disableCookieManagement() + .disableAutomaticRetries() + .disableAuthCaching(); + } + +} |