11package io .avaje .http .client ;
22
3+ import javax .net .ssl .SSLContext ;
4+ import javax .net .ssl .SSLParameters ;
5+ import java .net .Authenticator ;
36import java .net .CookieHandler ;
47import java .net .CookieManager ;
8+ import java .net .ProxySelector ;
59import java .net .http .HttpClient ;
610import java .time .Duration ;
711import java .util .ArrayList ;
@@ -23,6 +27,11 @@ class DHttpClientContextBuilder implements HttpClientContext.Builder {
2327 private HttpClient .Redirect redirect = HttpClient .Redirect .NORMAL ;
2428 private HttpClient .Version version ;
2529 private Executor executor ;
30+ private ProxySelector proxy ;
31+ private SSLContext sslContext ;
32+ private SSLParameters sslParameters ;
33+ private Authenticator authenticator ;
34+ private int priority ;
2635
2736 private final List <RequestIntercept > interceptors = new ArrayList <>();
2837 private final List <RequestListener > listeners = new ArrayList <>();
@@ -102,6 +111,36 @@ public HttpClientContext.Builder withExecutor(Executor executor) {
102111 return this ;
103112 }
104113
114+ @ Override
115+ public HttpClientContext .Builder withProxy (ProxySelector proxySelector ) {
116+ this .proxy = proxySelector ;
117+ return this ;
118+ }
119+
120+ @ Override
121+ public HttpClientContext .Builder withSSLContext (SSLContext sslContext ) {
122+ this .sslContext = sslContext ;
123+ return this ;
124+ }
125+
126+ @ Override
127+ public HttpClientContext .Builder withSSLParameters (SSLParameters sslParameters ) {
128+ this .sslParameters = sslParameters ;
129+ return this ;
130+ }
131+
132+ @ Override
133+ public HttpClientContext .Builder withAuthenticator (Authenticator authenticator ) {
134+ this .authenticator = authenticator ;
135+ return this ;
136+ }
137+
138+ @ Override
139+ public HttpClientContext .Builder withPriority (int priority ) {
140+ this .priority = priority ;
141+ return this ;
142+ }
143+
105144 @ Override
106145 public HttpClientContext build () {
107146 requireNonNull (baseUrl , "baseUrl is not specified" );
@@ -133,8 +172,7 @@ private RequestIntercept buildIntercept() {
133172 }
134173
135174 private HttpClient defaultClient () {
136- final HttpClient .Builder builder =
137- HttpClient .newBuilder ()
175+ final HttpClient .Builder builder = HttpClient .newBuilder ()
138176 .followRedirects (redirect )
139177 .connectTimeout (Duration .ofSeconds (20 ));
140178 if (cookieHandler != null ) {
@@ -146,6 +184,21 @@ private HttpClient defaultClient() {
146184 if (executor != null ) {
147185 builder .executor (executor );
148186 }
187+ if (proxy != null ) {
188+ builder .proxy (proxy );
189+ }
190+ if (sslContext != null ) {
191+ builder .sslContext (sslContext );
192+ }
193+ if (sslParameters != null ) {
194+ builder .sslParameters (sslParameters );
195+ }
196+ if (authenticator != null ) {
197+ builder .authenticator (authenticator );
198+ }
199+ if (priority > 0 ) {
200+ builder .priority (priority );
201+ }
149202 return builder .build ();
150203 }
151204
0 commit comments