summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-04-24 00:22:21 +0200
committerPeter Wu <peter@lekensteyn.nl>2014-04-24 00:22:21 +0200
commit5bb859152e5d9f160baf588e1555e79a4617fa8c (patch)
treed062d5ce678a3e1cc48cbcccf63dc408aa516fab
parent5dd7436fa096d67758a25a713fdd8d70ca8d605c (diff)
downloadTwitterDataAnalytics-5bb859152e5d9f160baf588e1555e79a4617fa8c.tar.gz
Refactor consumer key/secret pair into container
-rw-r--r--src/mining/BearerRequester.java19
-rw-r--r--src/support/ConsumerKeySecret.java39
2 files changed, 44 insertions, 14 deletions
diff --git a/src/mining/BearerRequester.java b/src/mining/BearerRequester.java
index 104dabb..bc82cd9 100644
--- a/src/mining/BearerRequester.java
+++ b/src/mining/BearerRequester.java
@@ -4,10 +4,10 @@ import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
-import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.Charsets;
import org.json.JSONException;
import org.json.JSONObject;
+import support.ConsumerKeySecret;
/**
* An API requester used for application-only requests. Not all requests are
@@ -35,19 +35,18 @@ public class BearerRequester extends AbstractRequester {
* Instantiates an instance, requesting an access token from the provided
* consumer key and secret.
*
- * @param consumerKey Key provided by Twitter.
- * @param consumerSecret Secret provided by Twitter.
+ * @param secrets The consumer secrets provided by Twitter.
* @throws IOException if a failure occurred while acquiring a token.
*/
- public BearerRequester(String consumerKey, String consumerSecret)
+ public BearerRequester(ConsumerKeySecret secrets)
throws IOException {
- String creds = encodeToken(consumerKey, consumerSecret);
String postData = "grant_type=client_credentials";
URL url = buildUrl("oauth2/token");
HttpURLConnection conn = open(url);
conn.setRequestMethod("POST");
// set request headers
- conn.addRequestProperty("Authorization", "Basic " + creds);
+ conn.addRequestProperty("Authorization", "Basic "
+ + secrets.getBearerTokenBase64());
conn.addRequestProperty("Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8");
conn.setFixedLengthStreamingMode(postData.length());
@@ -74,14 +73,6 @@ public class BearerRequester extends AbstractRequester {
conn.addRequestProperty("Authorization", "Bearer " + access_token);
}
- private String encodeToken(String consumerKey, String consumerSecret) {
- StringBuilder sb = new StringBuilder();
- sb.append(consumerKey);
- sb.append(":");
- sb.append(consumerSecret);
- return Base64.encodeBase64String(sb.toString().getBytes(Charsets.UTF_8));
- }
-
/**
* @return the access token that authenticates requests.
*/
diff --git a/src/support/ConsumerKeySecret.java b/src/support/ConsumerKeySecret.java
new file mode 100644
index 0000000..25bde51
--- /dev/null
+++ b/src/support/ConsumerKeySecret.java
@@ -0,0 +1,39 @@
+package support;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.Charsets;
+
+/**
+ * Container for a pair of consumer key and secret. See
+ * https://dev.twitter.com/docs/auth/application-only-auth
+ */
+public class ConsumerKeySecret {
+
+ private final String key;
+ private final String secret;
+
+ public ConsumerKeySecret(String key, String secret) {
+ this.key = key;
+ this.secret = secret;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ private String getBearerToken() {
+ return key + ":" + secret;
+ }
+
+ /**
+ * @return Base64-encoded bearer token that can should be included in the
+ * Authorization header for application-only requests.
+ */
+ public String getBearerTokenBase64() {
+ return Base64.encodeBase64String(getBearerToken().getBytes(Charsets.UTF_8));
+ }
+}