From 488fc1451a23f148a9e8adfa37879213b3f55848 Mon Sep 17 00:00:00 2001 From: Adam England Date: Mon, 16 Apr 2012 21:47:00 -0500 Subject: [PATCH] Added Digg Support Refactoring --- .../java/org/scribe/builder/api/DiggApi.java | 26 ++++++++ .../scribe/extractors/JsonTokenExtractor.java | 7 +-- .../java/org/scribe/examples/DiggExample.java | 63 +++++++++++++++++++ 3 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/scribe/builder/api/DiggApi.java create mode 100644 src/test/java/org/scribe/examples/DiggExample.java diff --git a/src/main/java/org/scribe/builder/api/DiggApi.java b/src/main/java/org/scribe/builder/api/DiggApi.java new file mode 100644 index 0000000..6334d2e --- /dev/null +++ b/src/main/java/org/scribe/builder/api/DiggApi.java @@ -0,0 +1,26 @@ + +package org.scribe.builder.api; + +import org.scribe.model.Token; + +public class DiggApi extends DefaultApi10a { + + private static final String AUTHORIZATION_URL = "http://digg.com/oauth/authorize?oauth_token=%s"; + private static final String BASE_URL = "http://services.digg.com/oauth/"; + + @Override + public String getRequestTokenEndpoint() { + return BASE_URL + "request_token"; + } + + @Override + public String getAccessTokenEndpoint() { + return BASE_URL + "access_token"; + } + + @Override + public String getAuthorizationUrl(Token requestToken) { + return String.format(AUTHORIZATION_URL, requestToken.getToken()); + } + +} diff --git a/src/main/java/org/scribe/extractors/JsonTokenExtractor.java b/src/main/java/org/scribe/extractors/JsonTokenExtractor.java index 7c1ee04..487dd65 100644 --- a/src/main/java/org/scribe/extractors/JsonTokenExtractor.java +++ b/src/main/java/org/scribe/extractors/JsonTokenExtractor.java @@ -2,15 +2,14 @@ package org.scribe.extractors; import java.util.regex.*; -import org.scribe.exceptions.*; -import org.scribe.model.*; -import org.scribe.utils.*; +import org.scribe.exceptions.OAuthException; +import org.scribe.model.Token; +import org.scribe.utils.Preconditions; public class JsonTokenExtractor implements AccessTokenExtractor { private Pattern accessTokenPattern = Pattern.compile("\"access_token\":\\s*\"(\\S*?)\""); - @Override public Token extract(String response) { Preconditions.checkEmptyString(response, "Cannot extract a token from a null or empty String"); diff --git a/src/test/java/org/scribe/examples/DiggExample.java b/src/test/java/org/scribe/examples/DiggExample.java new file mode 100644 index 0000000..444bfca --- /dev/null +++ b/src/test/java/org/scribe/examples/DiggExample.java @@ -0,0 +1,63 @@ +package org.scribe.examples; + +import java.util.Scanner; + +import org.scribe.builder.ServiceBuilder; +import org.scribe.builder.api.DiggApi; +import org.scribe.model.*; +import org.scribe.oauth.OAuthService; + +public class DiggExample { + private static final String NETWORK_NAME = "Digg"; + private static final String PROTECTED_RESOURCE_URL = "http://services.digg.com/2.0/comment.digg"; + + public static void main(String[] args) { + // Replace these with your own api key and secret + String apiKey = "myKey"; + String apiSecret = "mySecret"; + OAuthService service = new ServiceBuilder().provider(DiggApi.class).apiKey(apiKey).apiSecret(apiSecret).build(); + Scanner in = new Scanner(System.in); + + System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ==="); + System.out.println(); + + // Obtain the Request Token + System.out.println("Fetching the Request Token..."); + Token requestToken = service.getRequestToken(); + System.out.println("Got the Request Token!"); + System.out.println(); + + // Obtain the Authorization URL + System.out.println("Fetching the Authorization URL..."); + String authorizationUrl = service.getAuthorizationUrl(requestToken); + System.out.println("Got the Authorization URL!"); + System.out.println("Now go and authorize Scribe here:"); + System.out.println(authorizationUrl); + System.out.println("And paste the authorization code here"); + System.out.print(">>"); + Verifier verifier = new Verifier(in.nextLine()); + System.out.println(); + + // Trade the Request Token and Verfier for the Access Token + System.out.println("Trading the Request Token for an Access Token..."); + Token accessToken = service.getAccessToken(requestToken, verifier); + System.out.println("Got the Access Token!"); + System.out.println("(if your curious it looks like this: " + accessToken + " )"); + System.out.println(); + + // Now let's go and ask for a protected resource! + System.out.println("Now we're going to access a protected resource..."); + OAuthRequest request = new OAuthRequest(Verb.POST, PROTECTED_RESOURCE_URL); + request.addBodyParameter("comment_id", "20100729223726:4fef610331ee46a3b5cbd740bf71313e"); + service.signRequest(accessToken, request); + Response response = request.send(); + System.out.println("Got it! Lets see what we found..."); + System.out.println(); + System.out.println(response.getCode()); + System.out.println(response.getBody()); + + System.out.println(); + System.out.println("Thats it man! Go and build something awesome with Scribe! :)"); + + } +} \ No newline at end of file