@Test public void testBasicBehavior() { HttpParameters params = new HttpParameters(); assertTrue(params.isEmpty()); params.put("a", "5"); assertFalse(params.isEmpty()); assertEquals("5", params.get("a").first()); params.put("a", "1"); assertEquals("a=1&a=5", params.getAsQueryString("a")); params.put("b", "drei"); params.put("b", "vier"); HashMap<String, List<String>> other = new HashMap<String, List<String>>(); LinkedList<String> values = new LinkedList<String>(); values.add("eins"); other.put("b", values); params.putMap(other); assertEquals(2, params.keySet().size()); assertEquals(5, params.size()); assertEquals("b=drei&b=eins&b=vier", params.getAsQueryString("b")); params.put("a b", "c d", true); assertEquals("a%20b=c%20d", params.getAsQueryString("a b")); assertEquals("c%20d", params.getFirst("a%20b")); assertEquals("c d", params.getFirst("a%20b", true)); assertEquals("x=", params.getAsQueryString("x"));
@Test public void testGetOAuthParameters() { HttpParameters params = new HttpParameters(); params.put("a", "5"); params.put("oauth_token", "1"); params.put("x_oauth_token", "1"); HttpParameters oauthParams = params.getOAuthParameters(); assertFalse(oauthParams.containsKey("a")); assertTrue(oauthParams.containsKey("oauth_token")); assertTrue(oauthParams.containsKey("x_oauth_token")); } }
public HttpParameters getOAuthParameters() { HttpParameters oauthParams = new HttpParameters(); for (Entry<String, SortedSet<String>> param : this.entrySet()) { String key = param.getKey(); if (key.startsWith("oauth_") || key.startsWith("x_oauth_")) { oauthParams.put(key, param.getValue()); } } return oauthParams; } }
public static HttpParameters oauthHeaderToParamsMap(String oauthHeader) { HttpParameters params = new HttpParameters(); if (oauthHeader == null || !oauthHeader.startsWith("OAuth ")) { return params; } oauthHeader = oauthHeader.substring("OAuth ".length()); String[] elements = oauthHeader.split(","); for (String keyValuePair : elements) { String[] keyValue = keyValuePair.split("="); params.put(keyValue[0].trim(), keyValue[1].replace("\"", "").trim()); } return params; }
public synchronized void retrieveAccessToken(OAuthConsumer consumer, String oauthVerifier, String... customOAuthParams) throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException { if (consumer.getToken() == null || consumer.getTokenSecret() == null) { throw new OAuthExpectationFailedException( "Authorized request token or token secret not set. " + "Did you retrieve an authorized request token before?"); } HttpParameters params = new HttpParameters(); params.putAll(customOAuthParams, true); if (isOAuth10a && oauthVerifier != null) { params.put(OAuth.OAUTH_VERIFIER, oauthVerifier, true); } retrieveToken(consumer, accessTokenEndpointUrl, params); }
public synchronized String retrieveRequestToken(OAuthConsumer consumer, String callbackUrl, String... customOAuthParams) throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException { // invalidate current credentials, if any consumer.setTokenWithSecret(null, null); // 1.0a expects the callback to be sent while getting the request token. // 1.0 service providers would simply ignore this parameter. HttpParameters params = new HttpParameters(); params.putAll(customOAuthParams, true); params.put(OAuth.OAUTH_CALLBACK, callbackUrl, true); retrieveToken(consumer, requestTokenEndpointUrl, params); String callbackConfirmed = responseParameters.getFirst(OAuth.OAUTH_CALLBACK_CONFIRMED); responseParameters.remove(OAuth.OAUTH_CALLBACK_CONFIRMED); isOAuth10a = Boolean.TRUE.toString().equals(callbackConfirmed); // 1.0 service providers expect the callback as part of the auth URL, // Do not send when 1.0a. if (isOAuth10a) { return OAuth.addQueryParameters(authorizationWebsiteUrl, OAuth.OAUTH_TOKEN, consumer.getToken()); } else { return OAuth.addQueryParameters(authorizationWebsiteUrl, OAuth.OAUTH_TOKEN, consumer.getToken(), OAuth.OAUTH_CALLBACK, callbackUrl); } }
public String writeSignature(String signature, HttpRequest request, HttpParameters requestParameters) { StringBuilder sb = new StringBuilder(); sb.append("OAuth "); // add the realm parameter, if any if (requestParameters.containsKey("realm")) { sb.append(requestParameters.getAsHeaderElement("realm")); sb.append(", "); } // add all (x_)oauth parameters HttpParameters oauthParams = requestParameters.getOAuthParameters(); oauthParams.put(OAuth.OAUTH_SIGNATURE, signature, true); Iterator<String> iter = oauthParams.keySet().iterator(); while (iter.hasNext()) { String key = iter.next(); sb.append(oauthParams.getAsHeaderElement(key)); if (iter.hasNext()) { sb.append(", "); } } String header = sb.toString(); OAuth.debugOut("Auth Header", header); request.setHeader(OAuth.HTTP_AUTHORIZATION_HEADER, header); return header; }
public String writeSignature(String signature, HttpRequest request, HttpParameters requestParameters) { // add all (x_)oauth parameters HttpParameters oauthParams = requestParameters.getOAuthParameters(); oauthParams.put(OAuth.OAUTH_SIGNATURE, signature, true); Iterator<String> iter = oauthParams.keySet().iterator(); // add the first query parameter (we always have at least the signature) String firstKey = iter.next(); StringBuilder sb = new StringBuilder(OAuth.addQueryString(request.getRequestUrl(), oauthParams.getAsQueryString(firstKey))); while (iter.hasNext()) { sb.append("&"); String key = iter.next(); sb.append(oauthParams.getAsQueryString(key)); } String signedUrl = sb.toString(); request.setRequestUrl(signedUrl); return signedUrl; }
public String getAsHeaderElement(String key) { String value = getFirst(key); if (value == null) { return null; } return key + "=\"" + value + "\""; }
HttpParameters params = new HttpParameters(); params.put("a", "1"); ((AbstractOAuthProvider) provider).setResponseParameters(params); assertEquals(true, provider.isOAuth10a()); assertNotNull(provider.getResponseParameters()); assertEquals("1", provider.getResponseParameters().getFirst("a"));
public void putAll(String[] keyValuePairs, boolean percentEncode) { for (int i = 0; i < keyValuePairs.length - 1; i += 2) { this.put(keyValuePairs[i], keyValuePairs[i + 1], percentEncode); } }
HttpParameters params = new HttpParameters(); params.put("a", "1", true); params.put("realm", "www.example.com", true); params.put("oauth_signature", "12345", true); String result = new SignatureBaseString(httpGetMock, params).normalizeRequestParameters(); assertEquals("a=1", result); params = new HttpParameters(); params.put("a", "1", true); params.put("c", "hi there", true); params.put("f", "25", true); params.put("f", "50", true); params.put("f", "a", true); params.put("z", "p", true); params.put("z", "t", true); String expected = "a=1&c=hi%20there&f=25&f=50&f=a&z=p&z=t"; result = new SignatureBaseString(httpGetMock, params).normalizeRequestParameters(); params = new HttpParameters(); params.put("a", "x!y", true); params.put("a", "x y", true); expected = "a=x%20y&a=x%21y"; result = new SignatureBaseString(httpGetMock, params).normalizeRequestParameters(); assertEquals(expected, result); params = new HttpParameters(); params.put("name", "", true); assertEquals("name=", new SignatureBaseString(httpGetMock, params) .normalizeRequestParameters());
/** * Convenience method to merge a Map<String, List<String>>. * * @param m * the map */ public void putMap(Map<String, List<String>> m) { for (String key : m.keySet()) { SortedSet<String> vals = get(key); if (vals == null) { vals = new TreeSet<String>(); put(key, vals); } vals.addAll(m.get(key)); } }
public synchronized HttpRequest sign(HttpRequest request) throws OAuthMessageSignerException, OAuthExpectationFailedException, OAuthCommunicationException { if (consumerKey == null) { throw new OAuthExpectationFailedException("consumer key not set"); } if (consumerSecret == null) { throw new OAuthExpectationFailedException("consumer secret not set"); } requestParameters = new HttpParameters(); try { if (additionalParameters != null) { requestParameters.putAll(additionalParameters, false); } collectHeaderParameters(request, requestParameters); collectQueryParameters(request, requestParameters); collectBodyParameters(request, requestParameters); // add any OAuth params that haven't already been set completeOAuthParameters(requestParameters); requestParameters.remove(OAuth.OAUTH_SIGNATURE); } catch (IOException e) { throw new OAuthCommunicationException(e); } String signature = messageSigner.sign(request, requestParameters); OAuth.debugOut("signature", signature); signingStrategy.writeSignature(signature, request, requestParameters); OAuth.debugOut("Request URL", request.getRequestUrl()); return request; }
@Test public void shouldMakeSpecialResponseParametersAvailableToConsumer() throws Exception { assertTrue(provider.getResponseParameters().isEmpty()); ((OAuthProviderMock) provider).mockConnection(OAuth.OAUTH_TOKEN + "=" + TOKEN + "&" + OAuth.OAUTH_TOKEN_SECRET + "=" + TOKEN_SECRET + "&a=1"); provider.retrieveRequestToken(consumerMock, null); assertEquals(1, provider.getResponseParameters().size()); assertTrue(provider.getResponseParameters().containsKey("a")); assertEquals("1", provider.getResponseParameters().getFirst("a")); ((OAuthProviderMock) provider).mockConnection(OAuth.OAUTH_TOKEN + "=" + TOKEN + "&" + OAuth.OAUTH_TOKEN_SECRET + "=" + TOKEN_SECRET + "&b=2&c=3"); provider.retrieveAccessToken(consumerMock, null); assertEquals(2, provider.getResponseParameters().size()); assertTrue(provider.getResponseParameters().containsKey("b")); assertTrue(provider.getResponseParameters().containsKey("c")); assertEquals("2", provider.getResponseParameters().getFirst("b")); assertEquals("3", provider.getResponseParameters().getFirst("c")); }
if (!out.containsKey(OAuth.OAUTH_CONSUMER_KEY)) { out.put(OAuth.OAUTH_CONSUMER_KEY, consumerKey, true); if (!out.containsKey(OAuth.OAUTH_SIGNATURE_METHOD)) { out.put(OAuth.OAUTH_SIGNATURE_METHOD, messageSigner.getSignatureMethod(), true); if (!out.containsKey(OAuth.OAUTH_TIMESTAMP)) { out.put(OAuth.OAUTH_TIMESTAMP, generateTimestamp(), true); if (!out.containsKey(OAuth.OAUTH_NONCE)) { out.put(OAuth.OAUTH_NONCE, generateNonce(), true); if (!out.containsKey(OAuth.OAUTH_VERSION)) { out.put(OAuth.OAUTH_VERSION, OAuth.VERSION_1_0, true); if (!out.containsKey(OAuth.OAUTH_TOKEN)) { if (token != null && !token.equals("") || sendEmptyTokens) { out.put(OAuth.OAUTH_TOKEN, token, true);
request.setHeader(header, defaultHeaders.get(header)); if (customOAuthParams != null && !customOAuthParams.isEmpty()) { consumer.setAdditionalParameters(customOAuthParams); String token = responseParams.getFirst(OAuth.OAUTH_TOKEN); String secret = responseParams.getFirst(OAuth.OAUTH_TOKEN_SECRET); responseParams.remove(OAuth.OAUTH_TOKEN); responseParams.remove(OAuth.OAUTH_TOKEN_SECRET);
public AbstractOAuthProvider(String requestTokenEndpointUrl, String accessTokenEndpointUrl, String authorizationWebsiteUrl) { this.requestTokenEndpointUrl = requestTokenEndpointUrl; this.accessTokenEndpointUrl = accessTokenEndpointUrl; this.authorizationWebsiteUrl = authorizationWebsiteUrl; this.responseParameters = new HttpParameters(); this.defaultHeaders = new HashMap<String, String>(); }
Iterator<String> iter = requestParameters.keySet().iterator(); sb.append(requestParameters.getAsQueryString(param, false));