aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/cgOAuth.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgeo/geocaching/cgOAuth.java')
-rw-r--r--src/cgeo/geocaching/cgOAuth.java92
1 files changed, 48 insertions, 44 deletions
diff --git a/src/cgeo/geocaching/cgOAuth.java b/src/cgeo/geocaching/cgOAuth.java
index 13a1eb2..29b82d3 100644
--- a/src/cgeo/geocaching/cgOAuth.java
+++ b/src/cgeo/geocaching/cgOAuth.java
@@ -7,48 +7,52 @@ import java.util.List;
import java.util.Map;
public class cgOAuth {
- public static String signOAuth(String host, String path, String method, boolean https, Map<String, String> params, String token, String tokenSecret) {
- String paramsDone = "";
- if (method.equalsIgnoreCase("GET") == false && method.equalsIgnoreCase("POST") == false) {
- method = "POST";
- } else {
- method = method.toUpperCase();
- }
-
- if (token == null) token = "";
- if (tokenSecret == null) tokenSecret = "";
-
- long currentTime = new Date().getTime(); // miliseconds
- currentTime = currentTime / 1000; // seconds
- currentTime = (long)Math.floor(currentTime);
-
- params.put("oauth_consumer_key", cgSettings.keyConsumerPublic);
- params.put("oauth_nonce", cgBase.md5(Long.toString(System.currentTimeMillis())));
- params.put("oauth_signature_method", "HMAC-SHA1");
- params.put("oauth_timestamp", Long.toString(currentTime));
- params.put("oauth_token", token);
- params.put("oauth_version", "1.0");
-
- String[] keys = new String[params.keySet().size()];
- params.keySet().toArray(keys);
- Arrays.sort(keys);
-
- List<String> paramsEncoded = new ArrayList<String>();
- for (String key : keys) {
- String value = params.get(key);
- paramsEncoded.add(key + "=" + cgBase.urlencode_rfc3986(value));
- }
-
- String keysPacked;
- String requestPacked;
-
- keysPacked = cgSettings.keyConsumerSecret + "&" + tokenSecret; // both even if empty some of them!
- if (https) requestPacked = method + "&" + cgBase.urlencode_rfc3986("https://" + host + path) + "&" + cgBase.urlencode_rfc3986(cgBase.implode("&", paramsEncoded.toArray()));
- else requestPacked = method + "&" + cgBase.urlencode_rfc3986("http://" + host + path) + "&" + cgBase.urlencode_rfc3986(cgBase.implode("&", paramsEncoded.toArray()));
- paramsEncoded.add("oauth_signature=" + cgBase.urlencode_rfc3986(cgBase.base64Encode(cgBase.hashHmac(requestPacked, keysPacked))));
-
- paramsDone = cgBase.implode("&", paramsEncoded.toArray());
-
- return paramsDone;
- }
+ public static String signOAuth(String host, String path, String method, boolean https, Map<String, String> params, String token, String tokenSecret) {
+ String paramsDone = "";
+ if (method.equalsIgnoreCase("GET") == false && method.equalsIgnoreCase("POST") == false) {
+ method = "POST";
+ } else {
+ method = method.toUpperCase();
+ }
+
+ if (token == null)
+ token = "";
+ if (tokenSecret == null)
+ tokenSecret = "";
+
+ long currentTime = new Date().getTime(); // miliseconds
+ currentTime = currentTime / 1000; // seconds
+ currentTime = (long) Math.floor(currentTime);
+
+ params.put("oauth_consumer_key", cgSettings.keyConsumerPublic);
+ params.put("oauth_nonce", cgBase.md5(Long.toString(System.currentTimeMillis())));
+ params.put("oauth_signature_method", "HMAC-SHA1");
+ params.put("oauth_timestamp", Long.toString(currentTime));
+ params.put("oauth_token", token);
+ params.put("oauth_version", "1.0");
+
+ String[] keys = new String[params.keySet().size()];
+ params.keySet().toArray(keys);
+ Arrays.sort(keys);
+
+ List<String> paramsEncoded = new ArrayList<String>();
+ for (String key : keys) {
+ String value = params.get(key);
+ paramsEncoded.add(key + "=" + cgBase.urlencode_rfc3986(value));
+ }
+
+ String keysPacked;
+ String requestPacked;
+
+ keysPacked = cgSettings.keyConsumerSecret + "&" + tokenSecret; // both even if empty some of them!
+ if (https)
+ requestPacked = method + "&" + cgBase.urlencode_rfc3986("https://" + host + path) + "&" + cgBase.urlencode_rfc3986(cgBase.implode("&", paramsEncoded.toArray()));
+ else
+ requestPacked = method + "&" + cgBase.urlencode_rfc3986("http://" + host + path) + "&" + cgBase.urlencode_rfc3986(cgBase.implode("&", paramsEncoded.toArray()));
+ paramsEncoded.add("oauth_signature=" + cgBase.urlencode_rfc3986(cgBase.base64Encode(cgBase.hashHmac(requestPacked, keysPacked))));
+
+ paramsDone = cgBase.implode("&", paramsEncoded.toArray());
+
+ return paramsDone;
+ }
}