20
20
import java .net .HttpURLConnection ;
21
21
import java .nio .charset .Charset ;
22
22
import java .util .*;
23
+ import java .util .concurrent .TimeUnit ;
23
24
24
25
/** An immutable request to an http server. */
25
26
public final class Request {
@@ -38,13 +39,17 @@ private Body(byte[] data, Charset encoding, BodyTemplate bodyTemplate) {
38
39
}
39
40
40
41
public Request .Body expand (Map <String , ?> variables ) {
41
- if (bodyTemplate == null ) return this ;
42
+ if (bodyTemplate == null ) {
43
+ return this ;
44
+ }
42
45
43
46
return encoded (bodyTemplate .expand (variables ).getBytes (encoding ), encoding );
44
47
}
45
48
46
49
public List <String > getVariables () {
47
- if (bodyTemplate == null ) return Collections .emptyList ();
50
+ if (bodyTemplate == null ) {
51
+ return Collections .emptyList ();
52
+ }
48
53
return bodyTemplate .getVariables ();
49
54
}
50
55
@@ -70,12 +75,16 @@ public String bodyTemplate() {
70
75
}
71
76
72
77
public String asString () {
73
- return encoding != null && data != null ? new String (data , encoding ) : "Binary data" ;
78
+ return ! isBinary () ? new String (data , encoding ) : "Binary data" ;
74
79
}
75
80
76
81
public static Body empty () {
77
82
return new Request .Body (null , null , null );
78
83
}
84
+
85
+ public boolean isBinary () {
86
+ return encoding == null || data == null ;
87
+ }
79
88
}
80
89
81
90
public enum HttpMethod {
@@ -96,14 +105,15 @@ public enum HttpMethod {
96
105
*
97
106
* @deprecated {@link #create(HttpMethod, String, Map, byte[], Charset)}
98
107
*/
108
+ @ Deprecated
99
109
public static Request create (
100
110
String method ,
101
111
String url ,
102
112
Map <String , Collection <String >> headers ,
103
113
byte [] body ,
104
114
Charset charset ) {
105
115
checkNotNull (method , "httpMethod of %s" , method );
106
- HttpMethod httpMethod = HttpMethod .valueOf (method .toUpperCase ());
116
+ final HttpMethod httpMethod = HttpMethod .valueOf (method .toUpperCase ());
107
117
return create (httpMethod , url , headers , body , charset );
108
118
}
109
119
@@ -158,6 +168,7 @@ public static Request create(
158
168
* @return the HttpMethod string
159
169
* @deprecated @see {@link #httpMethod()}
160
170
*/
171
+ @ Deprecated
161
172
public String method () {
162
173
return httpMethod .name ();
163
174
}
@@ -188,6 +199,7 @@ public Map<String, Collection<String>> headers() {
188
199
*
189
200
* @deprecated use {@link #requestBody()} instead
190
201
*/
202
+ @ Deprecated
191
203
public Charset charset () {
192
204
return body .encoding ;
193
205
}
@@ -199,6 +211,7 @@ public Charset charset() {
199
211
* @see #charset()
200
212
* @deprecated use {@link #requestBody()} instead
201
213
*/
214
+ @ Deprecated
202
215
public byte [] body () {
203
216
return body .data ;
204
217
}
@@ -209,10 +222,10 @@ public Body requestBody() {
209
222
210
223
@ Override
211
224
public String toString () {
212
- StringBuilder builder = new StringBuilder ();
225
+ final StringBuilder builder = new StringBuilder ();
213
226
builder .append (httpMethod ).append (' ' ).append (url ).append (" HTTP/1.1\n " );
214
- for (String field : headers .keySet ()) {
215
- for (String value : valuesOrEmpty (headers , field )) {
227
+ for (final String field : headers .keySet ()) {
228
+ for (final String value : valuesOrEmpty (headers , field )) {
216
229
builder .append (field ).append (": " ).append (value ).append ('\n' );
217
230
}
218
231
}
@@ -228,40 +241,63 @@ public String toString() {
228
241
*/
229
242
public static class Options {
230
243
231
- private final int connectTimeoutMillis ;
232
- private final int readTimeoutMillis ;
244
+ private final long connectTimeout ;
245
+ private final TimeUnit connectTimeoutUnit ;
246
+ private final long readTimeout ;
247
+ private final TimeUnit readTimeoutUnit ;
233
248
private final boolean followRedirects ;
234
249
235
- public Options (int connectTimeoutMillis , int readTimeoutMillis , boolean followRedirects ) {
236
- this .connectTimeoutMillis = connectTimeoutMillis ;
237
- this .readTimeoutMillis = readTimeoutMillis ;
250
+ public Options (
251
+ long connectTimeout ,
252
+ TimeUnit connectTimeoutUnit ,
253
+ long readTimeout ,
254
+ TimeUnit readTimeoutUnit ,
255
+ boolean followRedirects ) {
256
+ super ();
257
+ this .connectTimeout = connectTimeout ;
258
+ this .connectTimeoutUnit = connectTimeoutUnit ;
259
+ this .readTimeout = readTimeout ;
260
+ this .readTimeoutUnit = readTimeoutUnit ;
238
261
this .followRedirects = followRedirects ;
239
262
}
240
263
264
+ @ Deprecated
265
+ public Options (int connectTimeoutMillis , int readTimeoutMillis , boolean followRedirects ) {
266
+ this (
267
+ connectTimeoutMillis ,
268
+ TimeUnit .MILLISECONDS ,
269
+ readTimeoutMillis ,
270
+ TimeUnit .MILLISECONDS ,
271
+ followRedirects );
272
+ }
273
+
274
+ @ Deprecated
241
275
public Options (int connectTimeoutMillis , int readTimeoutMillis ) {
242
276
this (connectTimeoutMillis , readTimeoutMillis , true );
243
277
}
244
278
245
279
public Options () {
246
- this (10 * 1000 , 60 * 1000 );
280
+ this (10 , TimeUnit . SECONDS , 60 , TimeUnit . SECONDS , true );
247
281
}
248
282
249
283
/**
250
284
* Defaults to 10 seconds. {@code 0} implies no timeout.
251
285
*
252
286
* @see java.net.HttpURLConnection#getConnectTimeout()
253
287
*/
288
+ @ Deprecated
254
289
public int connectTimeoutMillis () {
255
- return connectTimeoutMillis ;
290
+ return ( int ) connectTimeoutUnit . toMillis ( connectTimeout ) ;
256
291
}
257
292
258
293
/**
259
294
* Defaults to 60 seconds. {@code 0} implies no timeout.
260
295
*
261
296
* @see java.net.HttpURLConnection#getReadTimeout()
262
297
*/
298
+ @ Deprecated
263
299
public int readTimeoutMillis () {
264
- return readTimeoutMillis ;
300
+ return ( int ) readTimeoutUnit . toMillis ( readTimeout ) ;
265
301
}
266
302
267
303
/**
@@ -272,5 +308,21 @@ public int readTimeoutMillis() {
272
308
public boolean isFollowRedirects () {
273
309
return followRedirects ;
274
310
}
311
+
312
+ public long connectTimeout () {
313
+ return connectTimeout ;
314
+ }
315
+
316
+ public TimeUnit connectTimeoutUnit () {
317
+ return connectTimeoutUnit ;
318
+ }
319
+
320
+ public long readTimeout () {
321
+ return readTimeout ;
322
+ }
323
+
324
+ public TimeUnit readTimeoutUnit () {
325
+ return readTimeoutUnit ;
326
+ }
275
327
}
276
328
}
0 commit comments