From 3132a9dfe7f9db00edbf9b19f132b64a6b25cc9c Mon Sep 17 00:00:00 2001 From: ponyloky Date: Thu, 5 Apr 2012 00:44:54 -0300 Subject: [PATCH] Adding support for the Freelancer.com API --- .../org/scribe/builder/api/FreelancerAPI.java | 39 ++++++++++ .../scribe/examples/FreelancerExample.java | 74 +++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 src/main/java/org/scribe/builder/api/FreelancerAPI.java create mode 100644 src/test/java/org/scribe/examples/FreelancerExample.java diff --git a/src/main/java/org/scribe/builder/api/FreelancerAPI.java b/src/main/java/org/scribe/builder/api/FreelancerAPI.java new file mode 100644 index 0000000..b428ebf --- /dev/null +++ b/src/main/java/org/scribe/builder/api/FreelancerAPI.java @@ -0,0 +1,39 @@ +package org.scribe.builder.api; + +import org.scribe.model.Token; +import org.scribe.model.Verb; + +public class FreelancerAPI extends DefaultApi10a +{ + private static final String AUTHORIZATION_URL = "http://www.sandbox.freelancer.com/users/api-token/auth.php?oauth_token=%s"; + + @Override + public String getAccessTokenEndpoint() + { + return "http://api.sandbox.freelancer.com/RequestAccessToken/requestAccessToken.xml?"; + } + + @Override + public String getRequestTokenEndpoint() + { + return "http://api.sandbox.freelancer.com/RequestRequestToken/requestRequestToken.xml"; + } + + @Override + public Verb getAccessTokenVerb() + { + return Verb.GET; + } + + @Override + public Verb getRequestTokenVerb() + { + return Verb.GET; + } + + @Override + public String getAuthorizationUrl(Token requestToken) + { + return String.format(AUTHORIZATION_URL, requestToken.getToken()); + } +} diff --git a/src/test/java/org/scribe/examples/FreelancerExample.java b/src/test/java/org/scribe/examples/FreelancerExample.java new file mode 100644 index 0000000..11a8973 --- /dev/null +++ b/src/test/java/org/scribe/examples/FreelancerExample.java @@ -0,0 +1,74 @@ +package org.scribe.examples; + +import java.util.Scanner; + +import org.scribe.builder.ServiceBuilder; +import org.scribe.builder.api.FreelancerAPI; +import org.scribe.model.OAuthRequest; +import org.scribe.model.Response; +import org.scribe.model.SignatureType; +import org.scribe.model.Token; +import org.scribe.model.Verb; +import org.scribe.model.Verifier; +import org.scribe.oauth.OAuthService; + +public class FreelancerExample +{ + + private static final String NETWORK_NAME = "Freelancer"; + private static final String AUTHORIZE_URL = "http://www.sandbox.freelancer.com/users/api-token/auth.php?oauth_token="; + private static final String PROTECTED_RESOURCE_URL = "http://api.sandbox.freelancer.com/Job/getJobList.json"; + private static final String SCOPE = "http://api.sandbox.freelancer.com"; + + public static void main(String[] args) + { + OAuthService service = new ServiceBuilder() + .provider(FreelancerAPI.class) + .signatureType(SignatureType.QueryString) + .apiKey("7f5a168a0bfdbd15b4a9ea2a969661c731cdea56") + .apiSecret("7bb8961b94873802f1c5344f671a518e087f5785").scope(SCOPE) + .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("(if your curious it looks like this: " + requestToken + + " )"); + System.out.println(); + + System.out.println("Now go and authorize Scribe here:"); + System.out.println(AUTHORIZE_URL + requestToken.getToken()); + System.out.println("And paste the verifier 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.GET, PROTECTED_RESOURCE_URL); + service.signRequest(accessToken, request); + request.addHeader("GData-Version", "3.0"); + 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! :)"); + } +}