protected RequestBuilderBase(Request prototype, boolean disableUrlEncoding, boolean validateHeaders) { this.method = prototype.getMethod(); this.uriEncoder = UriEncoder.uriEncoder(disableUrlEncoding); this.uri = prototype.getUri(); this.address = prototype.getAddress(); this.localAddress = prototype.getLocalAddress(); this.headers = new DefaultHttpHeaders(validateHeaders); this.headers.add(prototype.getHeaders()); if (isNonEmpty(prototype.getCookies())) { this.cookies = new ArrayList<>(prototype.getCookies()); this.byteData = prototype.getByteData(); this.compositeByteData = prototype.getCompositeByteData(); this.stringData = prototype.getStringData(); this.byteBufferData = prototype.getByteBufferData(); this.streamData = prototype.getStreamData(); this.bodyGenerator = prototype.getBodyGenerator(); if (isNonEmpty(prototype.getFormParams())) { this.formParams = new ArrayList<>(prototype.getFormParams()); if (isNonEmpty(prototype.getBodyParts())) { this.bodyParts = new ArrayList<>(prototype.getBodyParts()); this.virtualHost = prototype.getVirtualHost(); this.proxyServer = prototype.getProxyServer(); this.realm = prototype.getRealm(); this.file = prototype.getFile(); this.followRedirect = prototype.getFollowRedirect(); this.requestTimeout = prototype.getRequestTimeout(); this.readTimeout = prototype.getReadTimeout();
@Override protected ListenableFuture<Response> go(Request request) throws JsonProcessingException { Assert.assertEquals(TARGET_URL, request.getUrl()); Assert.assertEquals( "application/json", request.getHeaders().get(HttpHeaders.Names.CONTENT_TYPE) ); Assert.assertEquals( StringUtils.format( "[%s,%s]\n", jsonMapper.writeValueAsString(events.get(0)), jsonMapper.writeValueAsString(events.get(1)) ), StandardCharsets.UTF_8.decode(request.getByteBufferData().slice()).toString() ); return GoHandlers.immediateFuture(okResponse()); } }.times(1)
public Object getPartitionKey() { return connectionPoolPartitioning.getPartitionKey(targetRequest.getUri(), targetRequest.getVirtualHost(), proxyServer); }
private Channel pollPooledChannel(Request request, ProxyServer proxy, AsyncHandler<?> asyncHandler) { try { asyncHandler.onConnectionPoolAttempt(); } catch (Exception e) { LOGGER.error("onConnectionPoolAttempt crashed", e); } Uri uri = request.getUri(); String virtualHost = request.getVirtualHost(); final Channel channel = channelManager.poll(uri, virtualHost, proxy, request.getChannelPoolPartitioning()); if (channel != null) { LOGGER.debug("Using pooled Channel '{}' for '{}' to '{}'", channel, request.getMethod(), uri); } return channel; }
@Override public void calculateAndAddSignature(Request request, RequestBuilderBase<?> requestBuilder) { try { String authorization = INSTANCES.get().computeAuthorizationHeader( consumerAuth, userAuth, request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams()); requestBuilder.setHeader(HttpHeaderNames.AUTHORIZATION, authorization); } catch (InvalidKeyException e) { throw new IllegalArgumentException("Failed to compute a valid key from consumer and user secrets", e); } } }
String originalMethod = request.getMethod(); boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling())); boolean keepBody = statusCode == 307 || (statusCode == 302 && config.isStrict302Handling()); .setCookies(request.getCookies())// .setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())// .setFollowRedirect(true)// .setLocalInetAddress(request.getLocalAddress())// .setNameResolver(request.getNameResolver())// .setProxyServer(request.getProxyServer())// .setRealm(request.getRealm())// .setRequestTimeout(request.getRequestTimeout()); requestBuilder.setBodyCharset(request.getBodyCharset()); if (MiscUtils.isNonEmpty(request.getFormParams())) requestBuilder.setFormParams(request.getFormParams()); else if (request.getStringData() != null) requestBuilder.setBody(request.getStringData()); else if (request.getByteData() != null) requestBuilder.setBody(request.getByteData()); else if (request.getByteBufferData() != null) requestBuilder.setBody(request.getByteBufferData()); else if (request.getBodyGenerator() != null) requestBuilder.setBody(request.getBodyGenerator()); boolean sameBase = isSameBase(request.getUri(), newUri); requestBuilder.setVirtualHost(request.getVirtualHost());
public RequestImpl(Request prototype) { if (prototype != null) { this.method = prototype.getMethod(); this.uri = prototype.getUri(); this.address = prototype.getInetAddress(); this.localAddress = prototype.getLocalAddress(); this.headers = new FluentCaseInsensitiveStringsMap(prototype.getHeaders()); this.cookies = new ArrayList<>(prototype.getCookies()); this.byteData = prototype.getByteData(); this.compositeByteData = prototype.getCompositeByteData(); this.stringData = prototype.getStringData(); this.byteBufferData = prototype.getByteBufferData(); this.streamData = prototype.getStreamData(); this.bodyGenerator = prototype.getBodyGenerator(); this.formParams = prototype.getFormParams() == null ? null : new ArrayList<>(prototype.getFormParams()); this.parts = prototype.getParts() == null ? null : new ArrayList<>(prototype.getParts()); this.virtualHost = prototype.getVirtualHost(); this.length = prototype.getContentLength(); this.proxyServer = prototype.getProxyServer(); this.realm = prototype.getRealm(); this.file = prototype.getFile(); this.followRedirect = prototype.getFollowRedirect(); this.requestTimeout = prototype.getRequestTimeout(); this.rangeOffset = prototype.getRangeOffset(); this.charset = prototype.getBodyCharset(); this.connectionPoolPartitioning = prototype.getConnectionPoolPartitioning(); this.nameResolver = prototype.getNameResolver(); } }
Charset bodyCharset = request.getBodyCharset() == null ? DEFAULT_CHARSET : request.getBodyCharset(); if (request.getByteData() != null) nettyBody = new NettyByteArrayBody(request.getByteData()); else if (request.getCompositeByteData() != null) nettyBody = new NettyCompositeByteArrayBody(request.getCompositeByteData()); else if (request.getStringData() != null) nettyBody = new NettyByteBufferBody(StringUtils.charSequence2ByteBuffer(request.getStringData(), bodyCharset)); else if (request.getByteBufferData() != null) nettyBody = new NettyByteBufferBody(request.getByteBufferData()); else if (request.getStreamData() != null) nettyBody = new NettyInputStreamBody(request.getStreamData(), config); else if (isNonEmpty(request.getFormParams())) { if (!request.getHeaders().containsKey(CONTENT_TYPE)) contentType = HttpHeaders.Values.APPLICATION_X_WWW_FORM_URLENCODED; nettyBody = new NettyByteBufferBody(urlEncodeFormParams(request.getFormParams(), bodyCharset), contentType); } else if (isNonEmpty(request.getParts())) nettyBody = new NettyMultipartBody(request.getParts(), request.getHeaders(), config); else if (request.getFile() != null) nettyBody = new NettyFileBody(request.getFile(), config);
String originalMethod = request.getMethod(); boolean switchToGet = !originalMethod.equals(GET) && (statusCode == MOVED_PERMANENTLY_301 || statusCode == SEE_OTHER_303 || (statusCode == FOUND_302 && !config.isStrict302Handling())); .setChannelPoolPartitioning(request.getChannelPoolPartitioning()) .setFollowRedirect(true) .setLocalAddress(request.getLocalAddress()) .setNameResolver(request.getNameResolver()) .setProxyServer(request.getProxyServer()) .setRealm(request.getRealm()) .setRequestTimeout(request.getRequestTimeout()); requestBuilder.setCharset(request.getCharset()); if (isNonEmpty(request.getFormParams())) requestBuilder.setFormParams(request.getFormParams()); else if (request.getStringData() != null) requestBuilder.setBody(request.getStringData()); else if (request.getByteData() != null) requestBuilder.setBody(request.getByteData()); else if (request.getByteBufferData() != null) requestBuilder.setBody(request.getByteBufferData()); else if (request.getBodyGenerator() != null) requestBuilder.setBody(request.getBodyGenerator()); boolean sameBase = request.getUri().isSameBase(newUri); requestBuilder.setVirtualHost(request.getVirtualHost());
String originalMethod = request.getMethod(); boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling())); .setCookies(request.getCookies())// .setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())// .setFollowRedirect(true)// .setLocalInetAddress(request.getLocalAddress())// .setNameResolver(request.getNameResolver())// .setProxyServer(request.getProxyServer())// .setRealm(request.getRealm())// .setRequestTimeout(request.getRequestTimeout())// .setVirtualHost(request.getVirtualHost()); if (request.getUri().getScheme().startsWith(WS)) { newUrl = newUrl.replaceFirst(HTTP, WS); logger.debug("Sending redirect to {}", request.getUri()); if (isSameHostAndProtocol(request.getUri(), nextRequest.getUri())) { future.setReuseChannel(true); requestSender.drainChannelAndExecuteNextRequest(channel, future, nextRequest);
private NettyBody body(Request request) { NettyBody nettyBody = null; Charset bodyCharset = request.getCharset(); if (request.getByteData() != null) { nettyBody = new NettyByteArrayBody(request.getByteData()); } else if (request.getCompositeByteData() != null) { nettyBody = new NettyCompositeByteArrayBody(request.getCompositeByteData()); } else if (request.getStringData() != null) { nettyBody = new NettyByteBufferBody(StringUtils.charSequence2ByteBuffer(request.getStringData(), bodyCharset)); } else if (request.getByteBufferData() != null) { nettyBody = new NettyByteBufferBody(request.getByteBufferData()); } else if (request.getStreamData() != null) { nettyBody = new NettyInputStreamBody(request.getStreamData()); } else if (isNonEmpty(request.getFormParams())) { CharSequence contentTypeOverride = request.getHeaders().contains(CONTENT_TYPE) ? null : HttpHeaderValues.APPLICATION_X_WWW_FORM_URLENCODED; nettyBody = new NettyByteBufferBody(urlEncodeFormParams(request.getFormParams(), bodyCharset), contentTypeOverride); } else if (isNonEmpty(request.getBodyParts())) { nettyBody = new NettyMultipartBody(request.getBodyParts(), request.getHeaders(), config); } else if (request.getFile() != null) { nettyBody = new NettyFileBody(request.getFile(), config); } else if (request.getBodyGenerator() instanceof FileBodyGenerator) {
private void validateWebSocketRequest(Request request, AsyncHandler<?> asyncHandler) { Uri uri = request.getUri(); boolean isWs = uri.isWebSocket(); if (asyncHandler instanceof WebSocketUpgradeHandler) { if (!isWs) { throw new IllegalArgumentException( "WebSocketUpgradeHandler but scheme isn't ws or wss: " + uri.getScheme()); } else if (!request.getMethod().equals(GET) && !request.getMethod().equals(CONNECT)) { throw new IllegalArgumentException( "WebSocketUpgradeHandler but method isn't GET or CONNECT: " + request.getMethod()); } } else if (isWs) { throw new IllegalArgumentException("No WebSocketUpgradeHandler but scheme is " + uri.getScheme()); } }
public NettyRequest newNettyRequest(Request request, boolean performConnectRequest, ProxyServer proxyServer, Realm realm, Realm proxyRealm) { Uri uri = request.getUri(); HttpMethod method = performConnectRequest ? HttpMethod.CONNECT : HttpMethod.valueOf(request.getMethod()); boolean connect = method == HttpMethod.CONNECT; headers.set(PROXY_AUTHORIZATION, request.getHeaders().getAll(PROXY_AUTHORIZATION)); headers.set(request.getHeaders()); if (isNonEmpty(request.getCookies())) { headers.set(COOKIE, cookieEncoder.encode(request.getCookies())); String virtualHost = request.getVirtualHost(); headers.set(HOST, virtualHost != null ? virtualHost : hostHeader(uri));
HttpHeaders requestHeaders = new DefaultHttpHeaders(false).add(request.getHeaders()); .setUri(request.getUri()) .setMethodName(request.getMethod()) .setUsePreemptiveAuth(true) .parseWWWAuthenticateHeader(digestHeader) LOGGER.debug("Sending authentication to {}", request.getUri()); if (future.isKeepAlive() && !HttpUtil.isTransferEncodingChunked(httpRequest)
private <T> ListenableFuture<T> submit(Request request, ZendeskAsyncCompletionHandler<T> handler) { if (logger.isDebugEnabled()) { if (request.getStringData() != null) { logger.debug("Request {} {}\n{}", request.getMethod(), request.getUrl(), request.getStringData()); } else if (request.getByteData() != null) { logger.debug("Request {} {} {} {} bytes", request.getMethod(), request.getUrl(), request.getHeaders().get("Content-type"), request.getByteData().length); } else { logger.debug("Request {} {}", request.getMethod(), request.getUrl()); } } return client.executeRequest(request, handler); }
@Override public <T> FilterContext<T> filter(FilterContext<T> ctx) { // pass on the x-expect-get and remove the x-redirect // headers if found in the response ctx.getResponseHeaders().get("x-expect-post"); ctx.getRequest().getHeaders().add("x-expect-post", "true"); ctx.getRequest().getHeaders().remove("x-redirect"); return ctx; } };
@Override protected ListenableFuture<Response> go(Request request) { results.put( request.getUrl(), StandardCharsets.UTF_8.decode(request.getByteBufferData().slice()).toString() ); return GoHandlers.immediateFuture(okResponse()); } }.times(2)
.build(); final List<Param> params = req.getQueryParams(); assertEquals(params.size(), 2); String authHeader = req.getHeaders().get(AUTHORIZATION); Matcher m = Pattern.compile("oauth_signature=\"(.+?)\"").matcher(authHeader); assertTrue(m.find()); assertEquals(req.getUrl(), "http://photos.example.net/photos?file=vacation.jpg&size=original"); assertEquals( authHeader,
/** * Invoke this API if you want to set the Range header on your {@link Request} based on the last valid bytes * position. * * @param request {@link Request} * @return a {@link Request} with the Range header properly set. */ public Request adjustRequestRange(Request request) { Long ri = resumableIndex.get(request.getUrl()); if (ri != null) { byteTransferred.set(ri); } // The Resumable if (resumableListener != null && resumableListener.length() > 0 && byteTransferred.get() != resumableListener.length()) { byteTransferred.set(resumableListener.length()); } RequestBuilder builder = new RequestBuilder(request); if (request.getHeaders().get(RANGE) == null && byteTransferred.get() != 0) { builder.setHeader(RANGE, "bytes=" + byteTransferred.get() + "-"); } return builder.build(); }