1
1
package io .avaje .http .client ;
2
2
3
+ import javax .net .ssl .SSLContext ;
4
+ import javax .net .ssl .SSLParameters ;
5
+ import java .net .Authenticator ;
3
6
import java .net .CookieHandler ;
4
7
import java .net .CookieManager ;
8
+ import java .net .ProxySelector ;
5
9
import java .net .http .HttpClient ;
6
10
import java .time .Duration ;
7
11
import java .util .ArrayList ;
@@ -23,6 +27,11 @@ class DHttpClientContextBuilder implements HttpClientContext.Builder {
23
27
private HttpClient .Redirect redirect = HttpClient .Redirect .NORMAL ;
24
28
private HttpClient .Version version ;
25
29
private Executor executor ;
30
+ private ProxySelector proxy ;
31
+ private SSLContext sslContext ;
32
+ private SSLParameters sslParameters ;
33
+ private Authenticator authenticator ;
34
+ private int priority ;
26
35
27
36
private final List <RequestIntercept > interceptors = new ArrayList <>();
28
37
private final List <RequestListener > listeners = new ArrayList <>();
@@ -102,6 +111,36 @@ public HttpClientContext.Builder withExecutor(Executor executor) {
102
111
return this ;
103
112
}
104
113
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
+
105
144
@ Override
106
145
public HttpClientContext build () {
107
146
requireNonNull (baseUrl , "baseUrl is not specified" );
@@ -133,8 +172,7 @@ private RequestIntercept buildIntercept() {
133
172
}
134
173
135
174
private HttpClient defaultClient () {
136
- final HttpClient .Builder builder =
137
- HttpClient .newBuilder ()
175
+ final HttpClient .Builder builder = HttpClient .newBuilder ()
138
176
.followRedirects (redirect )
139
177
.connectTimeout (Duration .ofSeconds (20 ));
140
178
if (cookieHandler != null ) {
@@ -146,6 +184,21 @@ private HttpClient defaultClient() {
146
184
if (executor != null ) {
147
185
builder .executor (executor );
148
186
}
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
+ }
149
202
return builder .build ();
150
203
}
151
204
0 commit comments