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()); } }
private boolean isConnectAlreadyDone(Request request, NettyResponseFuture<?> future) { return future != null && future.getNettyRequest() != null && future.getNettyRequest().getHttpRequest().method() == HttpMethod.CONNECT && !request.getMethod().equals(CONNECT); }
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); } } }
@Test public void testPercentageEncodedUserInfo() { final Request req = get("http://hello:wor%20ld@foo.com").build(); assertEquals(req.getMethod(), "GET"); assertEquals(req.getUrl(), "http://hello:wor%20ld@foo.com"); }
@Test public void testUserProvidedRequestMethod() { Request req = new RequestBuilder("ABC").setUrl("http://foo.com").build(); assertEquals(req.getMethod(), "ABC"); assertEquals(req.getUrl(), "http://foo.com"); }
private Future<Response> execute(RequestBuilder rb, BodyConsumer bodyConsumer, ThrowableHandler throwableHandler) throws IOException { if (throwableHandler == null) { throwableHandler = defaultThrowableHandler; } Request request = rb.build(); ProgressAsyncHandler<Response> handler = new BodyConsumerAsyncHandler(bodyConsumer, throwableHandler, errorDocumentBehaviour, request.getUri(), listener); if (resumeEnabled && request.getMethod().equals("GET") && bodyConsumer != null && bodyConsumer instanceof ResumableBodyConsumer) { ResumableBodyConsumer fileBodyConsumer = (ResumableBodyConsumer) bodyConsumer; long length = fileBodyConsumer.getTransferredBytes(); fileBodyConsumer.resume(); handler = new ResumableBodyConsumerAsyncHandler(length, handler); } return getAsyncHttpClient().executeRequest(request, handler); }
public NettyRequest newNettyRequest(Request request, boolean performConnectRequest, ProxyServer proxyServer, Realm realm, Realm proxyRealm) { HttpMethod method = performConnectRequest ? HttpMethod.CONNECT : HttpMethod.valueOf(request.getMethod()); boolean connect = method == HttpMethod.CONNECT;
@Override public void calculateAndAddSignature(Request request, RequestBuilderBase<?> requestBuilder) { try { String authorization = new OAuthSignatureCalculatorInstance().computeAuthorizationHeader( consumerKey, requestToken, request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams(), timestamp, nonce); requestBuilder.setHeader(HttpHeaderNames.AUTHORIZATION, authorization); } catch (InvalidKeyException | NoSuchAlgorithmException e) { throw new IllegalArgumentException(e); } } }
.setMethodName(request.getMethod()) .build(); authorizationHeader = computeDigestAuthentication(realm);
public static String perRequestProxyAuthorizationHeader(Request request, Realm proxyRealm) { String proxyAuthorization = null; if (proxyRealm != null && proxyRealm.isUsePreemptiveAuth()) { switch (proxyRealm.getScheme()) { case BASIC: proxyAuthorization = computeBasicAuthentication(proxyRealm); break; case DIGEST: if (isNonEmpty(proxyRealm.getNonce())) { // update realm with request information proxyRealm = realm(proxyRealm) .setUri(request.getUri()) .setMethodName(request.getMethod()) .build(); proxyAuthorization = computeDigestAuthentication(proxyRealm); } break; case NTLM: case KERBEROS: case SPNEGO: // NTLM, KERBEROS and SPNEGO are only set on the first request with a connection, // see perConnectionProxyAuthorizationHeader break; default: throw new IllegalStateException("Invalid Authentication scheme " + proxyRealm.getScheme()); } } return proxyAuthorization; }
private void testSignatureBaseString(Request request) throws NoSuchAlgorithmException { String signatureBaseString = new OAuthSignatureCalculatorInstance() .signatureBaseString(// new ConsumerKey("9djdj82h48djs9d2", CONSUMER_SECRET), new RequestToken("kkk9d7dh3k39sjv7", TOKEN_SECRET), request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams(), 137131201, "7d8f3e4a").toString(); assertEquals(signatureBaseString, "POST&" + "http%3A%2F%2Fexample.com%2Frequest" + "&a2%3Dr%2520b%26" + "a3%3D2%2520q%26" + "a3%3Da%26" + "b5%3D%253D%25253D%26" + "c%2540%3D%26" + "c2%3D%26" + "oauth_consumer_key%3D9djdj82h48djs9d2%26" + "oauth_nonce%3D7d8f3e4a%26" + "oauth_signature_method%3DHMAC-SHA1%26" + "oauth_timestamp%3D137131201%26" + "oauth_token%3Dkkk9d7dh3k39sjv7%26" + "oauth_version%3D1.0"); }
@Test public void testWithStarQueryParameterValue() throws NoSuchAlgorithmException { final Request request = get("http://term.ie/oauth/example/request_token.php?testvalue=*").build(); String signatureBaseString = new OAuthSignatureCalculatorInstance() .signatureBaseString( new ConsumerKey("key", "secret"), new RequestToken(null, null), request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams(), 1469019732, "6ad17f97334700f3ec2df0631d5b7511").toString(); assertEquals(signatureBaseString, "GET&" + "http%3A%2F%2Fterm.ie%2Foauth%2Fexample%2Frequest_token.php&" + "oauth_consumer_key%3Dkey%26" + "oauth_nonce%3D6ad17f97334700f3ec2df0631d5b7511%26" + "oauth_signature_method%3DHMAC-SHA1%26" + "oauth_timestamp%3D1469019732%26" + "oauth_version%3D1.0%26" + "testvalue%3D%252A"); }
@Test public void testSignatureGenerationWithAsteriskInPath() throws InvalidKeyException, NoSuchAlgorithmException { ConsumerKey consumerKey = new ConsumerKey("key", "secret"); RequestToken requestToken = new RequestToken(null, null); String nonce = "6ad17f97334700f3ec2df0631d5b7511"; long timestamp = 1469019732; final Request request = get("http://example.com/oauth/example/*path/wi*th/asterisks*").build(); String expectedSignature = "cswi/v3ZqhVkTyy5MGqW841BxDA="; String actualSignature = new OAuthSignatureCalculatorInstance().computeSignature( consumerKey, requestToken, request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams(), timestamp, nonce); assertEquals(actualSignature, expectedSignature); String generatedAuthHeader = new OAuthSignatureCalculatorInstance().computeAuthorizationHeader(consumerKey, requestToken, actualSignature, timestamp, nonce); assertTrue(generatedAuthHeader.contains("oauth_signature=\"cswi%2Fv3ZqhVkTyy5MGqW841BxDA%3D\"")); }
@Test public void testWithNullRequestToken() throws NoSuchAlgorithmException { final Request request = get("http://photos.example.net/photos?file=vacation.jpg&size=original").build(); String signatureBaseString = new OAuthSignatureCalculatorInstance() .signatureBaseString(// new ConsumerKey("9djdj82h48djs9d2", CONSUMER_SECRET), new RequestToken(null, null), request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams(), 137131201, Utf8UrlEncoder.percentEncodeQueryElement("ZLc92RAkooZcIO/0cctl0Q==")).toString(); assertEquals(signatureBaseString, "GET&" + "http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" + "oauth_consumer_key%3D9djdj82h48djs9d2%26" + "oauth_nonce%3DZLc92RAkooZcIO%252F0cctl0Q%253D%253D%26" + "oauth_signature_method%3DHMAC-SHA1%26" + "oauth_timestamp%3D137131201%26" + "oauth_version%3D1.0%26size%3Doriginal"); }
private void testSignatureBaseStringWithEncodableOAuthToken(Request request) throws NoSuchAlgorithmException { String signatureBaseString = new OAuthSignatureCalculatorInstance() .signatureBaseString(// new ConsumerKey("9djdj82h48djs9d2", CONSUMER_SECRET), new RequestToken("kkk9d7dh3k39sjv7", TOKEN_SECRET), request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams(), 137131201, Utf8UrlEncoder.percentEncodeQueryElement("ZLc92RAkooZcIO/0cctl0Q==")).toString(); assertEquals(signatureBaseString, "POST&" + "http%3A%2F%2Fexample.com%2Frequest" + "&a2%3Dr%2520b%26" + "a3%3D2%2520q%26" + "a3%3Da%26" + "b5%3D%253D%25253D%26" + "c%2540%3D%26" + "c2%3D%26" + "oauth_consumer_key%3D9djdj82h48djs9d2%26" + "oauth_nonce%3DZLc92RAkooZcIO%252F0cctl0Q%253D%253D%26" + "oauth_signature_method%3DHMAC-SHA1%26" + "oauth_timestamp%3D137131201%26" + "oauth_token%3Dkkk9d7dh3k39sjv7%26" + "oauth_version%3D1.0"); }
@Test public void testGetCalculateSignature() throws NoSuchAlgorithmException, InvalidKeyException { Request request = get("http://photos.example.net/photos") .addQueryParam("file", "vacation.jpg") .addQueryParam("size", "original") .build(); String signature = new OAuthSignatureCalculatorInstance() .computeSignature(new ConsumerKey(CONSUMER_KEY, CONSUMER_SECRET), new RequestToken(TOKEN_KEY, TOKEN_SECRET), request.getUri(), request.getMethod(), request.getFormParams(), request.getQueryParams(), TIMESTAMP, NONCE); assertEquals(signature, "tR3+Ty81lMeYAr/Fid0kMTYa/WM="); }
.setMethodName(request.getMethod()) .setUsePreemptiveAuth(true) .parseWWWAuthenticateHeader(digestHeader)
protected RequestBuilderBase(Request prototype, boolean disableUrlEncoding, boolean validateHeaders) { this.method = prototype.getMethod(); this.uriEncoder = UriEncoder.uriEncoder(disableUrlEncoding); this.uri = prototype.getUri();
future.setInProxyAuth(false); String originalMethod = request.getMethod(); boolean switchToGet = !originalMethod.equals(GET) && (statusCode == MOVED_PERMANENTLY_301 || statusCode == SEE_OTHER_303 || (statusCode == FOUND_302 && !config.isStrict302Handling()));