Skip to content

Commit

Permalink
Added uitilty method to MapUtils for appending and encoding parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
fernandezpablo85 committed Mar 13, 2011
1 parent 22367de commit 16b3475
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ public String extract(OAuthRequest request)
private String getSortedAndEncodedParams(OAuthRequest request)
{
Map<String, String> params = new HashMap<String, String>();
params.putAll(request.getQueryStringParams());
params.putAll(request.getBodyParams());
params.putAll(request.getOauthParameters());
MapUtils.decodeAndAppendEntries(request.getQueryStringParams(), params);
MapUtils.decodeAndAppendEntries(request.getBodyParams(), params);
MapUtils.decodeAndAppendEntries(request.getOauthParameters(), params);
params = MapUtils.sort(params);
return URLUtils.percentEncode(URLUtils.formURLEncodeMap(params));
return URLUtils.percentEncode(URLUtils.concatSortedPercentEncodedParams(params));
}

private void checkPreconditions(OAuthRequest request)
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/org/scribe/utils/MapUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,19 @@ private static List<String> getSortedKeys(Map<String, String> map)
Collections.sort(keys);
return keys;
}

/**
* Form-urlDecodes and appends all keys from the source {@link Map} to the
* target {@link Map}
*
* @param source Map from where the keys get copied and decoded
* @param target Map where the decoded keys are copied to
*/
public static void decodeAndAppendEntries(Map<String, String> source, Map<String, String> target)
{
for (String key: source.keySet())
{
target.put(URLUtils.percentEncode(key), URLUtils.percentEncode(source.get(key)));
}
}
}
2 changes: 2 additions & 0 deletions src/main/java/org/scribe/utils/URLUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ public static String appendParametersToQueryString(String url, Map<String, Strin
* @param params key-value map
* @return querystring-like String
*/
// TODO Move to MapUtils
public static String concatSortedPercentEncodedParams(Map<String, String> params)
{
StringBuilder result = new StringBuilder();
Expand All @@ -156,6 +157,7 @@ public static String concatSortedPercentEncodedParams(Map<String, String> params
* @param queryString querystring-like String
* @return a map with the form-urldecoded parameters
*/
// TODO Move to MapUtils
public static Map<String, String> queryStringToMap(String queryString)
{
Map<String, String> result = new HashMap<String, String>();
Expand Down

0 comments on commit 16b3475

Please sign in to comment.