aboutsummaryrefslogtreecommitdiffstats
path: root/http-utils
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-05-03 07:30:55 +0200
committerjonmv <venstad@gmail.com>2022-05-03 07:30:55 +0200
commit3592e408848787f75e721bf2d6f99f3f010f6610 (patch)
tree8a41d51e4bbc420bc1dbc65d76e79e3f8ab423d3 /http-utils
parente046ae79779261b09f85bcf4c04c906b83075775 (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.java49
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();
+ }
+
+}