MCPcopy Index your code
hub / github.com/OpenFeign/feign / ApacheHttp5Client

Class ApacheHttp5Client

hc5/src/main/java/feign/hc5/ApacheHttp5Client.java:67–278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65/*
66 */
67public final class ApacheHttp5Client implements Client {
68 private static final String ACCEPT_HEADER_NAME = "Accept";
69
70 private final HttpClient client;
71
72 public ApacheHttp5Client() {
73 this(HttpClientBuilder.create().build());
74 }
75
76 public ApacheHttp5Client(HttpClient client) {
77 this.client = client;
78 }
79
80 @Override
81 public Response execute(Request request, Request.Options options) throws IOException {
82 ClassicHttpRequest httpUriRequest;
83 try {
84 httpUriRequest = toClassicHttpRequest(request, options);
85 } catch (final URISyntaxException e) {
86 throw new IOException("URL '" + request.url() + "' couldn't be parsed into a URI", e);
87 }
88 final HttpHost target = HttpHost.create(URI.create(request.url()));
89 final HttpClientContext context = configureTimeoutsAndRedirection(options);
90
91 final ClassicHttpResponse httpResponse =
92 (ClassicHttpResponse) client.execute(target, httpUriRequest, context);
93 return toFeignResponse(httpResponse, request);
94 }
95
96 protected HttpClientContext configureTimeoutsAndRedirection(Request.Options options) {
97 final HttpClientContext context = new HttpClientContext();
98 // per request timeouts
99 final RequestConfig requestConfig =
100 (client instanceof Configurable
101 ? RequestConfig.copy(((Configurable) client).getConfig())
102 : RequestConfig.custom())
103 .setConnectTimeout(options.connectTimeout(), options.connectTimeoutUnit())
104 .setResponseTimeout(options.readTimeout(), options.readTimeoutUnit())
105 .setRedirectsEnabled(options.isFollowRedirects())
106 .build();
107 context.setRequestConfig(requestConfig);
108 return context;
109 }
110
111 ClassicHttpRequest toClassicHttpRequest(Request request, Request.Options options)
112 throws URISyntaxException {
113 final ClassicRequestBuilder requestBuilder =
114 ClassicRequestBuilder.create(request.httpMethod().name());
115
116 final URI uri = new URIBuilder(request.url()).build();
117
118 requestBuilder.setUri(uri.getScheme() + "://" + uri.getAuthority() + uri.getRawPath());
119
120 // request query params
121 final List<NameValuePair> queryParams = URLEncodedUtils.parse(uri, requestBuilder.getCharset());
122 for (final NameValuePair queryParam : queryParams) {
123 requestBuilder.addParameter(queryParam);
124 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected