diff options
author | Peter Wu <peter@lekensteyn.nl> | 2014-04-24 00:22:21 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2014-04-24 00:22:21 +0200 |
commit | 5bb859152e5d9f160baf588e1555e79a4617fa8c (patch) | |
tree | d062d5ce678a3e1cc48cbcccf63dc408aa516fab | |
parent | 5dd7436fa096d67758a25a713fdd8d70ca8d605c (diff) | |
download | TwitterDataAnalytics-5bb859152e5d9f160baf588e1555e79a4617fa8c.tar.gz |
Refactor consumer key/secret pair into container
-rw-r--r-- | src/mining/BearerRequester.java | 19 | ||||
-rw-r--r-- | src/support/ConsumerKeySecret.java | 39 |
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)); + } +} |