1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.http.support;
29
30 import java.net.URI;
31 import java.net.URISyntaxException;
32 import java.nio.charset.Charset;
33 import java.util.Arrays;
34 import java.util.List;
35
36 import org.apache.hc.core5.http.Header;
37 import org.apache.hc.core5.http.HttpHost;
38 import org.apache.hc.core5.http.HttpRequest;
39 import org.apache.hc.core5.http.Method;
40 import org.apache.hc.core5.http.NameValuePair;
41 import org.apache.hc.core5.http.ProtocolVersion;
42 import org.apache.hc.core5.http.message.BasicHttpRequest;
43 import org.apache.hc.core5.net.URIAuthority;
44 import org.apache.hc.core5.net.URIBuilder;
45 import org.apache.hc.core5.util.Args;
46
47
48
49
50
51
52 public class BasicRequestBuilder extends AbstractRequestBuilder<BasicHttpRequest> {
53
54 BasicRequestBuilder(final String method) {
55 super(method);
56 }
57
58 BasicRequestBuilder(final Method method) {
59 super(method);
60 }
61
62 BasicRequestBuilder(final String method, final URI uri) {
63 super(method, uri);
64 }
65
66 BasicRequestBuilder(final Method method, final URI uri) {
67 super(method, uri);
68 }
69
70 BasicRequestBuilder(final Method method, final String uri) {
71 super(method, uri);
72 }
73
74 BasicRequestBuilder(final String method, final String uri) {
75 super(method, uri);
76 }
77
78 public static BasicRequestBuilder create(final String method) {
79 Args.notBlank(method, "HTTP method");
80 return new BasicRequestBuilder(method);
81 }
82
83 public static BasicRequestBuilder get() {
84 return new BasicRequestBuilder(Method.GET);
85 }
86
87 public static BasicRequestBuilder get(final URI uri) {
88 return new BasicRequestBuilder(Method.GET, uri);
89 }
90
91 public static BasicRequestBuilder get(final String uri) {
92 return new BasicRequestBuilder(Method.GET, uri);
93 }
94
95 public static BasicRequestBuilder head() {
96 return new BasicRequestBuilder(Method.HEAD);
97 }
98
99 public static BasicRequestBuilder head(final URI uri) {
100 return new BasicRequestBuilder(Method.HEAD, uri);
101 }
102
103 public static BasicRequestBuilder head(final String uri) {
104 return new BasicRequestBuilder(Method.HEAD, uri);
105 }
106
107 public static BasicRequestBuilder patch() {
108 return new BasicRequestBuilder(Method.PATCH);
109 }
110
111 public static BasicRequestBuilder patch(final URI uri) {
112 return new BasicRequestBuilder(Method.PATCH, uri);
113 }
114
115 public static BasicRequestBuilder patch(final String uri) {
116 return new BasicRequestBuilder(Method.PATCH, uri);
117 }
118
119 public static BasicRequestBuilder post() {
120 return new BasicRequestBuilder(Method.POST);
121 }
122
123 public static BasicRequestBuilder post(final URI uri) {
124 return new BasicRequestBuilder(Method.POST, uri);
125 }
126
127 public static BasicRequestBuilder post(final String uri) {
128 return new BasicRequestBuilder(Method.POST, uri);
129 }
130
131 public static BasicRequestBuilder put() {
132 return new BasicRequestBuilder(Method.PUT);
133 }
134
135 public static BasicRequestBuilder put(final URI uri) {
136 return new BasicRequestBuilder(Method.PUT, uri);
137 }
138
139 public static BasicRequestBuilder put(final String uri) {
140 return new BasicRequestBuilder(Method.PUT, uri);
141 }
142
143 public static BasicRequestBuilder delete() {
144 return new BasicRequestBuilder(Method.DELETE);
145 }
146
147 public static BasicRequestBuilder delete(final URI uri) {
148 return new BasicRequestBuilder(Method.DELETE, uri);
149 }
150
151 public static BasicRequestBuilder delete(final String uri) {
152 return new BasicRequestBuilder(Method.DELETE, uri);
153 }
154
155 public static BasicRequestBuilder trace() {
156 return new BasicRequestBuilder(Method.TRACE);
157 }
158
159 public static BasicRequestBuilder trace(final URI uri) {
160 return new BasicRequestBuilder(Method.TRACE, uri);
161 }
162
163 public static BasicRequestBuilder trace(final String uri) {
164 return new BasicRequestBuilder(Method.TRACE, uri);
165 }
166
167 public static BasicRequestBuilder options() {
168 return new BasicRequestBuilder(Method.OPTIONS);
169 }
170
171 public static BasicRequestBuilder options(final URI uri) {
172 return new BasicRequestBuilder(Method.OPTIONS, uri);
173 }
174
175 public static BasicRequestBuilder options(final String uri) {
176 return new BasicRequestBuilder(Method.OPTIONS, uri);
177 }
178
179 public static BasicRequestBuilder copy(final HttpRequest request) {
180 Args.notNull(request, "HTTP request");
181 final BasicRequestBuilder builder = new BasicRequestBuilder(request.getMethod());
182 builder.digest(request);
183 return builder;
184 }
185
186 @Override
187 public BasicRequestBuilder setVersion(final ProtocolVersion version) {
188 super.setVersion(version);
189 return this;
190 }
191
192 @Override
193 public BasicRequestBuilder setUri(final URI uri) {
194 super.setUri(uri);
195 return this;
196 }
197
198 @Override
199 public BasicRequestBuilder setUri(final String uri) {
200 super.setUri(uri);
201 return this;
202 }
203
204 @Override
205 public BasicRequestBuilder setScheme(final String scheme) {
206 super.setScheme(scheme);
207 return this;
208 }
209
210 @Override
211 public BasicRequestBuilder setAuthority(final URIAuthority authority) {
212 super.setAuthority(authority);
213 return this;
214 }
215
216
217
218
219 @Override
220 public BasicRequestBuilder setHttpHost(final HttpHost httpHost) {
221 super.setHttpHost(httpHost);
222 return this;
223 }
224
225 @Override
226 public BasicRequestBuilder setPath(final String path) {
227 super.setPath(path);
228 return this;
229 }
230
231 @Override
232 public BasicRequestBuilder setHeaders(final Header... headers) {
233 super.setHeaders(headers);
234 return this;
235 }
236
237 @Override
238 public BasicRequestBuilder addHeader(final Header header) {
239 super.addHeader(header);
240 return this;
241 }
242
243 @Override
244 public BasicRequestBuilder addHeader(final String name, final String value) {
245 super.addHeader(name, value);
246 return this;
247 }
248
249 @Override
250 public BasicRequestBuilder removeHeader(final Header header) {
251 super.removeHeader(header);
252 return this;
253 }
254
255 @Override
256 public BasicRequestBuilder removeHeaders(final String name) {
257 super.removeHeaders(name);
258 return this;
259 }
260
261 @Override
262 public BasicRequestBuilder setHeader(final Header header) {
263 super.setHeader(header);
264 return this;
265 }
266
267 @Override
268 public BasicRequestBuilder setHeader(final String name, final String value) {
269 super.setHeader(name, value);
270 return this;
271 }
272
273 @Override
274 public BasicRequestBuilder setCharset(final Charset charset) {
275 super.setCharset(charset);
276 return this;
277 }
278
279 @Override
280 public BasicRequestBuilder addParameter(final NameValuePair nvp) {
281 super.addParameter(nvp);
282 return this;
283 }
284
285 @Override
286 public BasicRequestBuilder addParameter(final String name, final String value) {
287 super.addParameter(name, value);
288 return this;
289 }
290
291 @Override
292 public BasicRequestBuilder addParameters(final NameValuePair... nvps) {
293 super.addParameters(nvps);
294 return this;
295 }
296
297 @Override
298 public BasicRequestBuilder setAbsoluteRequestUri(final boolean absoluteRequestUri) {
299 super.setAbsoluteRequestUri(absoluteRequestUri);
300 return this;
301 }
302
303 @Override
304 public BasicHttpRequest build() {
305 String path = getPath();
306 final List<NameValuePair> parameters = getParameters();
307 if (parameters != null && !parameters.isEmpty()) {
308 try {
309 final URI uri = new URIBuilder(path)
310 .setCharset(getCharset())
311 .addParameters(parameters)
312 .build();
313 path = uri.toASCIIString();
314 } catch (final URISyntaxException ex) {
315
316 }
317 }
318 final BasicHttpRequest result = new BasicHttpRequest(getMethod(), getScheme(), getAuthority(), path);
319 result.setVersion(getVersion());
320 result.setHeaders(getHeaders());
321 result.setAbsoluteRequestUri(isAbsoluteRequestUri());
322 return result;
323 }
324
325 @Override
326 public String toString() {
327 final StringBuilder builder = new StringBuilder();
328 builder.append("BasicRequestBuilder [method=");
329 builder.append(getMethod());
330 builder.append(", scheme=");
331 builder.append(getScheme());
332 builder.append(", authority=");
333 builder.append(getAuthority());
334 builder.append(", path=");
335 builder.append(getPath());
336 builder.append(", parameters=");
337 builder.append(getParameters());
338 builder.append(", headerGroup=");
339 builder.append(Arrays.toString(getHeaders()));
340 builder.append("]");
341 return builder.toString();
342 }
343
344 }