diff --git a/.externalToolBuilders/Scribe Builder.launch b/.externalToolBuilders/Scribe Builder.launch
new file mode 100644
index 000000000..4f6129480
--- /dev/null
+++ b/.externalToolBuilders/Scribe Builder.launch
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
index a9a50de0e..2c3c951ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,5 @@ scribe.iml
# Binaries
-target
\ No newline at end of file
+target
+build
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index c966b9e63..aafc5b872 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,4 +2,4 @@
language: java
# need to override travis 'install' since it will try gpg sign and fail.
-install: mvn clean package -DskipTests=true
+install: true
diff --git a/README.textile b/README.textile
index e1726c94f..831d45684 100644
--- a/README.textile
+++ b/README.textile
@@ -1,95 +1,7 @@
-h2. Welcome to the home of Scribe, the simple OAuth Java lib!
+h2. This is a fork of scribe for java 1.4
-!https://secure.travis-ci.org/fernandezpablo85/scribe-java.png?branch=master(travis-ci-status)!
+I updated the code to make it compile with a 1.4 compiler.
+I also abstracted the default java HTTP out so I can rely on a separate HTTP provider in the package.
-h2. Before submitting a pull request "please read this":https://github.com/fernandezpablo85/scribe-java/wiki/Scribe-scope-revised
-
-h1. Why use Scribe?
-
-h3. Dead Simple
-
-Who said OAuth was difficult? Configuring scribe is __so easy your grandma can do it__! check it out:
-
-@OAuthService service = new ServiceBuilder()@
- @.provider(LinkedInApi.class)@
- @.apiKey(YOUR_API_KEY)@
- @.apiSecret(YOUR_API_SECRET)@
- @.build();@
-
-That **single line** (added newlines for readability) is the only thing you need to configure scribe with LinkedIn's OAuth API for example.
-
-h3. Threadsafe
-
-Hit Scribe as hard and with many threads as you like.
-
-h3. Supports all major 1.0a and 2.0 OAuth APIs out-of-the-box
-
-* Google
-
-* Facebook
-
-* Yahoo
-
-* LinkedIn
-
-* Twitter
-
-* Foursquare
-
-* Evernote
-
-* Vimeo
-
-* Yammer
-
-* Windows Live
-
-* and many more! check the "examples folder":http://github.com/fernandezpablo85/scribe-java/tree/master/src/test/java/org/scribe/examples
-
-h3. Small and modular
-
-Scribe's code is small (about 1k LOC) and simple to understand. No smart-ass or "clever" hacks here.
-
-h3. Android-Ready
-
-Works out of the box with android(TM) applications.
-
-h3. Stable & bulletproof
-
-Good test coverage to keep you safe from harm.
-
-When something bad actually happens, Scribe's meaningful error messages will tell you exactly what went wrong, when and where.
-
-h3. Pull it from Maven! (new)
-
-You can pull scribe from a maven repository, just add this to your __pom.xml__ file:
-
-@@
- @org.scribe@
- @scribe@
- @1.3.5@
-@@
-
-h1. Getting started in less than 2 minutes
-
-Check the "Getting Started":http://wiki.github.com/fernandezpablo85/scribe-java/getting-started page and start rocking!
-
-h1. Please Read the "FAQ":http://wiki.github.com/fernandezpablo85/scribe-java/faq before creating an issue :)
-
-h1. Questions?
-
-Feel free to drop me an email, but there's already a "StackOverflow":http://stackoverflow.com tag for "scribe":http://stackoverflow.com/questions/tagged/scribe you should use. I'm subscribed to it so I'll pick the question immediately.
-
-Note that it really helps to run scribe on "debug mode":https://github.com/fernandezpablo85/scribe-java/wiki/debug-mode (since 1.3.0), to get additional info. To do this simply call the @.debug()@ method on the @ServiceBuilder@.
-
-h1. Forks
-
-Looking for a scribe variation? check the "Fork List":https://github.com/fernandezpablo85/scribe-java/wiki/Forks
-
-If you have a useful fork that should be listed there please contact me (see About me).
-
-h1. About me
-
-"LinkedIn profile":http://www.linkedin.com/in/fernandezpablo85
-
-Follow me: "@fernandezpablo":http://twitter.com/fernandezpablo
+Please see the original product for more information. If you find an issue in my translation of the project,
+please let me know. thanks!
diff --git a/build.xml b/build.xml
new file mode 100644
index 000000000..ef4de3cdd
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dist/scribe.jar b/dist/scribe.jar
new file mode 100644
index 000000000..2f26e7bf9
Binary files /dev/null and b/dist/scribe.jar differ
diff --git a/lib/commons-codec-1.5.jar b/lib/commons-codec-1.5.jar
new file mode 100644
index 000000000..e9013fed7
Binary files /dev/null and b/lib/commons-codec-1.5.jar differ
diff --git a/lib/commons-lang-2.6.jar b/lib/commons-lang-2.6.jar
new file mode 100644
index 000000000..98467d3a6
Binary files /dev/null and b/lib/commons-lang-2.6.jar differ
diff --git a/lib/jakarta-regexp-1.5.jar b/lib/jakarta-regexp-1.5.jar
new file mode 100644
index 000000000..652bc822c
Binary files /dev/null and b/lib/jakarta-regexp-1.5.jar differ
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index a276ae1bb..000000000
--- a/pom.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-
- 4.0.0
- org.scribe
- scribe
- jar
- 1.3.5
- Scribe OAuth Library
- The best OAuth library out there
- http://github.com/fernandezpablo85/scribe-java
-
-
- org.sonatype.oss
- oss-parent
- 5
-
-
-
-
- fernandezpablo85
- Pablo Fernandez
- fernandezpablo85@gmail.com
- -3
-
-
-
-
-
- MIT
- http://github.com/fernandezpablo85/scribe-java/blob/master/LICENSE.txt
-
-
-
-
- scm:http://github.com/fernandezpablo85/scribe-java.git
- scm:http://github.com/fernandezpablo85/scribe-java.git
- http://github.com/fernandezpablo85/scribe-java.git
-
-
-
-
- junit
- junit
- 4.8.1
- test
-
-
- commons-codec
- commons-codec
- 1.4
- compile
- true
-
-
-
-
-
- maven-compiler-plugin
- 3.0
-
- 1.5
- 1.5
-
-
-
- org.apache.maven.plugins
- maven-gpg-plugin
- 1.4
-
-
- sign-artifacts
- verify
-
- sign
-
-
-
-
-
- org.codehaus.mojo
- findbugs-maven-plugin
- 2.5.2
-
-
- failing-on-high
- compile
-
- check
-
-
- Low
-
-
-
-
-
-
-
diff --git a/src/apis/examples/AWeberExample.java b/src/apis/examples/AWeberExample.java
new file mode 100644
index 000000000..667efca0b
--- /dev/null
+++ b/src/apis/examples/AWeberExample.java
@@ -0,0 +1,62 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class AWeberExample {
+
+ //To get your consumer key/secret, and view API docs, see https://labs.aweber.com/docs
+ private static final String ACCOUNT_RESOURCE_URL = "https://api.aweber.com/1.0/accounts/";
+
+ private static final String CONSUMER_KEY = "";
+ private static final String CONSUMER_SECRET = "";
+
+ public static void main(final String[] args) {
+ final OAuthService service = new ServiceBuilder().provider(AWeberApi.class)
+ .apiKey(CONSUMER_KEY).apiSecret(CONSUMER_SECRET).build();
+
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== AWeber's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Request Token
+ System.out.println("Fetching the Request Token...");
+ final Token requestToken = service.getRequestToken();
+ System.out.println("Got the Request Token!");
+ System.out.println();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ System.out.println("And paste the verifier here");
+ System.out.print(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, ACCOUNT_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ final Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out
+ .println("Thats it man! Go and build something awesome with AWeber and Scribe! :)");
+ }
+
+}
\ No newline at end of file
diff --git a/src/apis/examples/DiggExample.java b/src/apis/examples/DiggExample.java
new file mode 100644
index 000000000..63a70f09d
--- /dev/null
+++ b/src/apis/examples/DiggExample.java
@@ -0,0 +1,65 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+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(final String[] args) {
+ // Replace these with your own api key and secret
+ final String apiKey = "myKey";
+ final String apiSecret = "mySecret";
+ final OAuthService service = new ServiceBuilder().provider(DiggApi.class).apiKey(apiKey)
+ .apiSecret(apiSecret).build();
+ final 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...");
+ final 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...");
+ final 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(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.POST, PROTECTED_RESOURCE_URL);
+ request.addBodyParameter("comment_id", "20100729223726:4fef610331ee46a3b5cbd740bf71313e");
+ service.signRequest(accessToken, request);
+ final 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
diff --git a/src/apis/examples/FacebookExample.java b/src/apis/examples/FacebookExample.java
new file mode 100644
index 000000000..4f28362e5
--- /dev/null
+++ b/src/apis/examples/FacebookExample.java
@@ -0,0 +1,60 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class FacebookExample {
+ private static final String NETWORK_NAME = "Facebook";
+ private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/me";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(final String[] args) {
+ // Replace these with your own api key and secret
+ final String apiKey = "your_app_id";
+ final String apiSecret = "your_api_secret";
+ final OAuthService service = new ServiceBuilder().provider(FacebookApi.class)
+ .apiKey(apiKey).apiSecret(apiSecret)
+ .callback("http://www.example.com/oauth_callback/").build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ final String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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(">>");
+ final 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...");
+ final Token accessToken = service.getAccessToken(EMPTY_TOKEN, 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ final 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
diff --git a/src/apis/examples/FlickrExample.java b/src/apis/examples/FlickrExample.java
new file mode 100644
index 000000000..232d1f67c
--- /dev/null
+++ b/src/apis/examples/FlickrExample.java
@@ -0,0 +1,59 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class FlickrExample {
+ private static final String PROTECTED_RESOURCE_URL = "http://api.flickr.com/services/rest/";
+
+ public static void main(final String[] args) {
+ // Replace these with your own api key and secret
+ final String apiKey = "your_app_id";
+ final String apiSecret = "your_api_secret";
+ final OAuthService service = new ServiceBuilder().provider(FlickrApi.class).apiKey(apiKey)
+ .apiSecret(apiSecret).build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Flickr's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Request Token
+ System.out.println("Fetching the Request Token...");
+ final Token requestToken = service.getRequestToken();
+ System.out.println("Got the Request Token!");
+ System.out.println();
+
+ System.out.println("Now go and authorize Scribe here:");
+ final String authorizationUrl = service.getAuthorizationUrl(requestToken);
+ System.out.println(authorizationUrl + "&perms=read");
+ System.out.println("And paste the verifier here");
+ System.out.print(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ request.addQuerystringParameter("method", "flickr.test.login");
+ service.signRequest(accessToken, request);
+ final Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+}
diff --git a/src/apis/examples/Foursquare2Example.java b/src/apis/examples/Foursquare2Example.java
new file mode 100644
index 000000000..9c3056a90
--- /dev/null
+++ b/src/apis/examples/Foursquare2Example.java
@@ -0,0 +1,59 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class Foursquare2Example {
+ private static final String PROTECTED_RESOURCE_URL = "https://api.foursquare.com/v2/users/self/friends?oauth_token=";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(final String[] args) {
+ // Replace these with your own api key and secret
+ final String apiKey = "FEGFXJUFANVVDHVSNUAMUKTTXCP1AJQD53E33XKJ44YP1S4I";
+ final String apiSecret = "AYWKUL5SWPNC0CTQ202QXRUG2NLZYXMRA34ZSDW4AUYBG2RC";
+ final OAuthService service = new ServiceBuilder().provider(Foursquare2Api.class)
+ .apiKey(apiKey).apiSecret(apiSecret).callback("http://localhost:9000/").build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Foursquare2's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ final String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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(">>");
+ final 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...");
+ final Token accessToken = service.getAccessToken(EMPTY_TOKEN, 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL
+ + accessToken.getToken());
+ service.signRequest(accessToken, request);
+ final 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! :)");
+
+ }
+}
diff --git a/src/apis/examples/FoursquareExample.java b/src/apis/examples/FoursquareExample.java
new file mode 100644
index 000000000..65b661a95
--- /dev/null
+++ b/src/apis/examples/FoursquareExample.java
@@ -0,0 +1,56 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class FoursquareExample {
+ private static final String PROTECTED_RESOURCE_URL = "http://api.foursquare.com/v1/user";
+
+ public static void main(final String[] args) {
+ final OAuthService service = new ServiceBuilder().provider(FoursquareApi.class)
+ .apiKey("FEGFXJUFANVVDHVSNUAMUKTTXCP1AJQD53E33XKJ44YP1S4I")
+ .apiSecret("AYWKUL5SWPNC0CTQ202QXRUG2NLZYXMRA34ZSDW4AUYBG2RC").build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Foursquare's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Request Token
+ System.out.println("Fetching the Request Token...");
+ final Token requestToken = service.getRequestToken();
+ System.out.println("Got the Request Token!");
+ System.out.println();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ System.out.println("And paste the verifier here");
+ System.out.print(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ final Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ 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
diff --git a/src/apis/examples/FreelancerExample.java b/src/apis/examples/FreelancerExample.java
new file mode 100644
index 000000000..cb522f5c2
--- /dev/null
+++ b/src/apis/examples/FreelancerExample.java
@@ -0,0 +1,64 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+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(final String[] args) {
+ final OAuthService service = new ServiceBuilder().provider(FreelancerApi.Sandbox.class)
+ .signatureType(SignatureType.QueryString)
+ .apiKey("7f5a168a0bfdbd15b4a9ea2a969661c731cdea56")
+ .apiSecret("7bb8961b94873802f1c5344f671a518e087f5785").scope(SCOPE).build();
+ final 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...");
+ final 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(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ request.addHeader("GData-Version", "3.0");
+ final 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! :)");
+ }
+}
diff --git a/src/apis/examples/GoogleExample.java b/src/apis/examples/GoogleExample.java
new file mode 100644
index 000000000..f2b7264e0
--- /dev/null
+++ b/src/apis/examples/GoogleExample.java
@@ -0,0 +1,61 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class GoogleExample {
+ private static final String NETWORK_NAME = "Google";
+ private static final String AUTHORIZE_URL = "https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=";
+ private static final String PROTECTED_RESOURCE_URL = "https://docs.google.com/feeds/default/private/full/";
+ private static final String SCOPE = "https://docs.google.com/feeds/";
+
+ public static void main(final String[] args) {
+ final OAuthService service = new ServiceBuilder().provider(GoogleApi.class)
+ .apiKey("anonymous").apiSecret("anonymous").scope(SCOPE).build();
+ final 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...");
+ final 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(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ request.addHeader("GData-Version", "3.0");
+ final 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
diff --git a/src/apis/examples/ImgUrExample.java b/src/apis/examples/ImgUrExample.java
new file mode 100644
index 000000000..5e784cc85
--- /dev/null
+++ b/src/apis/examples/ImgUrExample.java
@@ -0,0 +1,58 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class ImgUrExample {
+ private static final String PROTECTED_RESOURCE_URL = "http://api.imgur.com/2/account.json";
+
+ public static void main(final String[] args) {
+ // Replace these with your own api key and secret (you'll need an read/write api key)
+ final String apiKey = "your_app_id";
+ final String apiSecret = "your_api_secret";
+ final OAuthService service = new ServiceBuilder().provider(ImgUrApi.class).apiKey(apiKey)
+ .apiSecret(apiSecret).build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== ImgUr's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Request Token
+ System.out.println("Fetching the Request Token...");
+ final Token requestToken = service.getRequestToken();
+ System.out.println("Got the Request Token!");
+ System.out.println();
+
+ System.out.println("Now go and authorize Scribe here:");
+ final String authorizationUrl = service.getAuthorizationUrl(requestToken);
+ System.out.println(authorizationUrl);
+ System.out.println("And paste the verifier here");
+ System.out.print(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ final Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+}
diff --git a/src/apis/examples/Kaixin20Example.java b/src/apis/examples/Kaixin20Example.java
new file mode 100644
index 000000000..cdef9b0b1
--- /dev/null
+++ b/src/apis/examples/Kaixin20Example.java
@@ -0,0 +1,60 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class Kaixin20Example {
+ private static final String NETWORK_NAME = "Kaixin";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.kaixin001.com/users/me.json";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(final String[] args) {
+ // Replace these with your own api key and secret
+ final String apiKey = "your api key";
+ final String apiSecret = "your api secret";
+ final OAuthService service = new ServiceBuilder().provider(KaixinApi20.class)
+ .apiKey(apiKey).apiSecret(apiSecret).callback("http://your.domain.com/handle")
+ .build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ final String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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(">>");
+ final Verifier verifier = new Verifier(in.nextLine());
+ System.out.println();
+
+ // Trade the Request Token and Verifier for the Access Token
+ System.out.println("Trading the Request Token for an Access Token...");
+ final Token accessToken = service.getAccessToken(EMPTY_TOKEN, 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ final 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! :)");
+
+ }
+}
diff --git a/src/apis/examples/LinkedInExample.java b/src/apis/examples/LinkedInExample.java
new file mode 100644
index 000000000..3cf2cba5a
--- /dev/null
+++ b/src/apis/examples/LinkedInExample.java
@@ -0,0 +1,57 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class LinkedInExample {
+ private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~/connections:(id,last-name)";
+
+ public static void main(final String[] args) {
+ final OAuthService service = new ServiceBuilder().provider(LinkedInApi.class)
+ .apiKey("CiEgwWDkA5BFpNrc0RfGyVuSlOh4tig5kOTZ9q97qcXNrFl7zqk-Ts7DqRGaKDCV")
+ .apiSecret("dhho4dfoCmiQXrkw4yslork5XWLFnPSuMR-8gscPVjY4jqFFHPYWJKgpFl4uLTM6")
+ .build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== LinkedIn's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Request Token
+ System.out.println("Fetching the Request Token...");
+ final Token requestToken = service.getRequestToken();
+ System.out.println("Got the Request Token!");
+ System.out.println();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ System.out.println("And paste the verifier here");
+ System.out.print(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ final Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+
+}
diff --git a/src/apis/examples/LinkedInExampleWithScopes.java b/src/apis/examples/LinkedInExampleWithScopes.java
new file mode 100644
index 000000000..70d7113cf
--- /dev/null
+++ b/src/apis/examples/LinkedInExampleWithScopes.java
@@ -0,0 +1,58 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class LinkedInExampleWithScopes {
+ private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~/connections:(id,last-name)";
+
+ public static void main(final String[] args) {
+ final OAuthService service = new ServiceBuilder()
+ .provider(LinkedInApi.withScopes("foo", "bar", "baz"))
+ .apiKey("CiEgwWDkA5BFpNrc0RfGyVuSlOh4tig5kOTZ9q97qcXNrFl7zqk-Ts7DqRGaKDCV")
+ .apiSecret("dhho4dfoCmiQXrkw4yslork5XWLFnPSuMR-8gscPVjY4jqFFHPYWJKgpFl4uLTM6")
+ .build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== LinkedIn's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Request Token
+ System.out.println("Fetching the Request Token...");
+ final Token requestToken = service.getRequestToken();
+ System.out.println("Got the Request Token!");
+ System.out.println();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ System.out.println("And paste the verifier here");
+ System.out.print(">>");
+ final 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...");
+ final 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ service.signRequest(accessToken, request);
+ final Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+
+}
diff --git a/src/apis/examples/LiveExample.java b/src/apis/examples/LiveExample.java
new file mode 100644
index 000000000..d5683999c
--- /dev/null
+++ b/src/apis/examples/LiveExample.java
@@ -0,0 +1,59 @@
+package org.scribe.examples;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class LiveExample {
+ private static final String PROTECTED_RESOURCE_URL = "https://api.foursquare.com/v2/users/self/friends?oauth_token=";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(final String[] args) {
+ // Replace these with your own api key and secret
+ final String apiKey = "";
+ final String apiSecret = "";
+ final OAuthService service = new ServiceBuilder().provider(LiveApi.class).apiKey(apiKey)
+ .apiSecret(apiSecret).scope("wl.basic").callback("http://localhost:9000/").build();
+ final Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Windows Live's OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ final String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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(">>");
+ final 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...");
+ final Token accessToken = service.getAccessToken(EMPTY_TOKEN, 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...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL
+ + accessToken.getToken());
+ service.signRequest(accessToken, request);
+ final 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! :)");
+
+ }
+}
diff --git a/src/test/java/org/scribe/examples/LoveFilmExample.java b/src/apis/examples/LoveFilmExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/LoveFilmExample.java
rename to src/apis/examples/LoveFilmExample.java
index 9e800161e..e94057133 100644
--- a/src/test/java/org/scribe/examples/LoveFilmExample.java
+++ b/src/apis/examples/LoveFilmExample.java
@@ -1,64 +1,64 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class LoveFilmExample
-{
- private static final String NETWORK_NAME = "LoveFilm";
- private static final String PROTECTED_RESOURCE_URL = "https://api.lovefilm.com/users";
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your_key";
- String apiSecret = "your_secret";
- OAuthService service = new ServiceBuilder().provider(LoveFilmApi.class).apiKey(apiKey).apiSecret(apiSecret).build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Grab a request token.
- System.out.println("Fetching request token.");
- Token requestToken = service.getRequestToken();
- System.out.println("Got it ... ");
- System.out.println(requestToken.getToken());
-
- // 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.GET, PROTECTED_RESOURCE_URL);
- 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! :)");
-
- }
-}
+package org.scribe.examples;
+
+import java.util.*;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class LoveFilmExample
+{
+ private static final String NETWORK_NAME = "LoveFilm";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.lovefilm.com/users";
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ String apiKey = "your_key";
+ String apiSecret = "your_secret";
+ OAuthService service = new ServiceBuilder().provider(LoveFilmApi.class).apiKey(apiKey).apiSecret(apiSecret).build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Grab a request token.
+ System.out.println("Fetching request token.");
+ Token requestToken = service.getRequestToken();
+ System.out.println("Got it ... ");
+ System.out.println(requestToken.getToken());
+
+ // 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.GET, PROTECTED_RESOURCE_URL);
+ 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! :)");
+
+ }
+}
diff --git a/src/test/java/org/scribe/examples/MeetupExample.java b/src/apis/examples/MeetupExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/MeetupExample.java
rename to src/apis/examples/MeetupExample.java
index 2185b5c27..1331c4588 100644
--- a/src/test/java/org/scribe/examples/MeetupExample.java
+++ b/src/apis/examples/MeetupExample.java
@@ -1,62 +1,62 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.ServiceBuilder;
-import org.scribe.builder.api.MeetupApi;
-import org.scribe.model.OAuthRequest;
-import org.scribe.model.Response;
-import org.scribe.model.Token;
-import org.scribe.model.Verb;
-import org.scribe.model.Verifier;
-import org.scribe.oauth.OAuthService;
-
-public class MeetupExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.meetup.com/2/member/self";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(MeetupApi.class)
- .apiKey("j1khkp0dus323ftve0sdcv6ffe")
- .apiSecret("6s6gt6q59gvfjtsvgcmht62gq4")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Meetup'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-}
+package org.scribe.examples;
+
+import java.util.Scanner;
+
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.builder.api.MeetupApi;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.model.Verifier;
+import org.scribe.oauth.OAuthService;
+
+public class MeetupExample
+{
+ private static final String PROTECTED_RESOURCE_URL = "http://api.meetup.com/2/member/self";
+
+ public static void main(String[] args)
+ {
+ OAuthService service = new ServiceBuilder()
+ .provider(MeetupApi.class)
+ .apiKey("j1khkp0dus323ftve0sdcv6ffe")
+ .apiSecret("6s6gt6q59gvfjtsvgcmht62gq4")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Meetup'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();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ 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);
+ Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+}
diff --git a/src/test/java/org/scribe/examples/NeteaseWeiboExample.java b/src/apis/examples/NeteaseWeiboExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/NeteaseWeiboExample.java
rename to src/apis/examples/NeteaseWeiboExample.java
index e65335e76..63a64ab91 100644
--- a/src/test/java/org/scribe/examples/NeteaseWeiboExample.java
+++ b/src/apis/examples/NeteaseWeiboExample.java
@@ -1,68 +1,68 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class NeteaseWeiboExample
-{
- private static final String NETWORK_NAME = "NetEase(163.com) Weibo";
- private static final String PROTECTED_RESOURCE_URL = "http://api.t.163.com/account/verify_credentials.json";
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your key";
- String apiSecret = "your secret";
- OAuthService service = new ServiceBuilder()
- .provider(NeteaseWeibooApi.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Grab a request token.
- System.out.println("Fetching request token.");
- Token requestToken = service.getRequestToken();
- System.out.println("Got it ... ");
- System.out.println(requestToken.getToken());
-
- // 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.GET, PROTECTED_RESOURCE_URL);
- 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! :)");
- }
-}
+package org.scribe.examples;
+
+import java.util.*;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class NeteaseWeiboExample
+{
+ private static final String NETWORK_NAME = "NetEase(163.com) Weibo";
+ private static final String PROTECTED_RESOURCE_URL = "http://api.t.163.com/account/verify_credentials.json";
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ String apiKey = "your key";
+ String apiSecret = "your secret";
+ OAuthService service = new ServiceBuilder()
+ .provider(NeteaseWeibooApi.class)
+ .apiKey(apiKey)
+ .apiSecret(apiSecret)
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Grab a request token.
+ System.out.println("Fetching request token.");
+ Token requestToken = service.getRequestToken();
+ System.out.println("Got it ... ");
+ System.out.println(requestToken.getToken());
+
+ // 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.GET, PROTECTED_RESOURCE_URL);
+ 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! :)");
+ }
+}
diff --git a/src/test/java/org/scribe/examples/Px500Example.java b/src/apis/examples/Px500Example.java
similarity index 97%
rename from src/test/java/org/scribe/examples/Px500Example.java
rename to src/apis/examples/Px500Example.java
index cdbe44997..8e7710764 100644
--- a/src/test/java/org/scribe/examples/Px500Example.java
+++ b/src/apis/examples/Px500Example.java
@@ -1,60 +1,60 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class Px500Example
-{
- private static final String PROTECTED_RESOURCE_URL = "https://api.500px.com/v1/";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(Px500Api.class)
- .apiKey("your-api-key")
- .apiSecret("your-api-secret")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== 500Px'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
-
- }
-
+package org.scribe.examples;
+
+import java.util.Scanner;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class Px500Example
+{
+ private static final String PROTECTED_RESOURCE_URL = "https://api.500px.com/v1/";
+
+ public static void main(String[] args)
+ {
+ OAuthService service = new ServiceBuilder()
+ .provider(Px500Api.class)
+ .apiKey("your-api-key")
+ .apiSecret("your-api-secret")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== 500Px'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();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ 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);
+ Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ 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
diff --git a/src/test/java/org/scribe/examples/RenrenExample.java b/src/apis/examples/RenrenExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/RenrenExample.java
rename to src/apis/examples/RenrenExample.java
index ae13375b8..e45233687 100644
--- a/src/test/java/org/scribe/examples/RenrenExample.java
+++ b/src/apis/examples/RenrenExample.java
@@ -1,108 +1,108 @@
-package org.scribe.examples;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-import java.nio.charset.*;
-import java.security.*;
-import java.util.*;
-
-public class RenrenExample
-{
- private static final String NETWORK_NAME = "Renren";
- private static final String PROTECTED_RESOURCE_URL = "http://api.renren.com/restserver.do";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your api key";
- String apiSecret = "your api secret";
- OAuthService service = new ServiceBuilder()
- .provider(RenrenApi.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .scope("status_update publish_feed")
- .callback("http://your.doman.com/oauth/renren")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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(EMPTY_TOKEN, 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);
- Map parameters = new HashMap();
- parameters.put("method", "users.getInfo");
- parameters.put("format", "json");
- parameters.put("v", "1.0");
-
- List sigString = new ArrayList(parameters.size() + 1);
- for (Map.Entry entry : parameters.entrySet())
- {
- request.addQuerystringParameter(entry.getKey(), entry.getValue());
- sigString.add(String.format("%s=%s", entry.getKey(), entry.getValue()));
- }
- sigString.add(String.format("%s=%s", OAuthConstants.ACCESS_TOKEN, accessToken.getToken()));
- Collections.sort(sigString);
- StringBuilder b = new StringBuilder();
- for (String param : sigString)
- {
- b.append(param);
- }
- b.append(apiSecret);
- System.out.println("Sig string: " + b.toString());
- request.addQuerystringParameter("sig", md5(b.toString()));
- 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! :)");
-
- }
-
- public static String md5(String orgString)
- {
- try
- {
- java.security.MessageDigest md = MessageDigest.getInstance("MD5");
- byte[] array = md.digest(orgString.getBytes(Charset.forName("UTF-8")));
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < array.length; ++i)
- {
- sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
- }
- return sb.toString();
- }
- catch (NoSuchAlgorithmException e)
- {
- e.printStackTrace();
- }
- return null;
- }
-
-}
+package org.scribe.examples;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+import java.nio.charset.*;
+import java.security.*;
+import java.util.*;
+
+public class RenrenExample
+{
+ private static final String NETWORK_NAME = "Renren";
+ private static final String PROTECTED_RESOURCE_URL = "http://api.renren.com/restserver.do";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ String apiKey = "your api key";
+ String apiSecret = "your api secret";
+ OAuthService service = new ServiceBuilder()
+ .provider(RenrenApi.class)
+ .apiKey(apiKey)
+ .apiSecret(apiSecret)
+ .scope("status_update publish_feed")
+ .callback("http://your.doman.com/oauth/renren")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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(EMPTY_TOKEN, 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);
+ Map parameters = new HashMap();
+ parameters.put("method", "users.getInfo");
+ parameters.put("format", "json");
+ parameters.put("v", "1.0");
+
+ List sigString = new ArrayList(parameters.size() + 1);
+ for (Map.Entry entry : parameters.entrySet())
+ {
+ request.addQuerystringParameter(entry.getKey(), entry.getValue());
+ sigString.add(String.format("%s=%s", entry.getKey(), entry.getValue()));
+ }
+ sigString.add(String.format("%s=%s", OAuthConstants.ACCESS_TOKEN, accessToken.getToken()));
+ Collections.sort(sigString);
+ StringBuilder b = new StringBuilder();
+ for (String param : sigString)
+ {
+ b.append(param);
+ }
+ b.append(apiSecret);
+ System.out.println("Sig string: " + b.toString());
+ request.addQuerystringParameter("sig", md5(b.toString()));
+ 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! :)");
+
+ }
+
+ public static String md5(String orgString)
+ {
+ try
+ {
+ java.security.MessageDigest md = MessageDigest.getInstance("MD5");
+ byte[] array = md.digest(orgString.getBytes(Charset.forName("UTF-8")));
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < array.length; ++i)
+ {
+ sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
+ }
+ return sb.toString();
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
diff --git a/src/test/java/org/scribe/examples/SinaWeibo2Example.java b/src/apis/examples/SinaWeibo2Example.java
similarity index 97%
rename from src/test/java/org/scribe/examples/SinaWeibo2Example.java
rename to src/apis/examples/SinaWeibo2Example.java
index 89b14e117..01f926d73 100644
--- a/src/test/java/org/scribe/examples/SinaWeibo2Example.java
+++ b/src/apis/examples/SinaWeibo2Example.java
@@ -1,63 +1,63 @@
-package org.scribe.examples;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-import java.util.*;
-
-public class SinaWeibo2Example
-{
- private static final String NETWORK_NAME = "SinaWeibo";
- private static final String PROTECTED_RESOURCE_URL = "https://api.weibo.com/2/account/get_uid.json";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your_api_key";
- String apiSecret = "your_api_secret";
- OAuthService service = new ServiceBuilder()
- .provider(SinaWeiboApi20.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .callback("http://www.dajie.com/oauth/sina")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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 Verifier for the Access Token
- System.out.println("Trading the Request Token for an Access Token...");
- Token accessToken = service.getAccessToken(EMPTY_TOKEN, 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);
- 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! :)");
-
- }
-}
+package org.scribe.examples;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+import java.util.*;
+
+public class SinaWeibo2Example
+{
+ private static final String NETWORK_NAME = "SinaWeibo";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.weibo.com/2/account/get_uid.json";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ String apiKey = "your_api_key";
+ String apiSecret = "your_api_secret";
+ OAuthService service = new ServiceBuilder()
+ .provider(SinaWeiboApi20.class)
+ .apiKey(apiKey)
+ .apiSecret(apiSecret)
+ .callback("http://www.dajie.com/oauth/sina")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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 Verifier for the Access Token
+ System.out.println("Trading the Request Token for an Access Token...");
+ Token accessToken = service.getAccessToken(EMPTY_TOKEN, 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);
+ 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! :)");
+
+ }
+}
diff --git a/src/test/java/org/scribe/examples/SinaWeiboExample.java b/src/apis/examples/SinaWeiboExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/SinaWeiboExample.java
rename to src/apis/examples/SinaWeiboExample.java
index 2dc4b7c04..6b9401635 100644
--- a/src/test/java/org/scribe/examples/SinaWeiboExample.java
+++ b/src/apis/examples/SinaWeiboExample.java
@@ -1,68 +1,68 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class SinaWeiboExample
-{
- private static final String NETWORK_NAME = "SinaWeibo";
- private static final String PROTECTED_RESOURCE_URL = "http://api.t.sina.com.cn/account/verify_credentials.json";
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your key";
- String apiSecret = "your secret";
- OAuthService service = new ServiceBuilder()
- .provider(SinaWeiboApi.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Grab a request token.
- System.out.println("Fetching request token.");
- Token requestToken = service.getRequestToken();
- System.out.println("Got it ... ");
- System.out.println(requestToken.getToken());
-
- // 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.GET, PROTECTED_RESOURCE_URL);
- 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! :)");
- }
-}
+package org.scribe.examples;
+
+import java.util.*;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class SinaWeiboExample
+{
+ private static final String NETWORK_NAME = "SinaWeibo";
+ private static final String PROTECTED_RESOURCE_URL = "http://api.t.sina.com.cn/account/verify_credentials.json";
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ String apiKey = "your key";
+ String apiSecret = "your secret";
+ OAuthService service = new ServiceBuilder()
+ .provider(SinaWeiboApi.class)
+ .apiKey(apiKey)
+ .apiSecret(apiSecret)
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Grab a request token.
+ System.out.println("Fetching request token.");
+ Token requestToken = service.getRequestToken();
+ System.out.println("Got it ... ");
+ System.out.println(requestToken.getToken());
+
+ // 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.GET, PROTECTED_RESOURCE_URL);
+ 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! :)");
+ }
+}
diff --git a/src/test/java/org/scribe/examples/SkyrockExample.java b/src/apis/examples/SkyrockExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/SkyrockExample.java
rename to src/apis/examples/SkyrockExample.java
index 422d067e5..313fbd63f 100644
--- a/src/test/java/org/scribe/examples/SkyrockExample.java
+++ b/src/apis/examples/SkyrockExample.java
@@ -1,61 +1,61 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class SkyrockExample
-{
- private static final String PROTECTED_RESOURCE_URL = "https://api.skyrock.com/v2/user/get.json";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(SkyrockApi.class)
- .apiKey("your-api-key")
- .apiSecret("your-api-secret")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Skyrock'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- 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! :)");
-
- }
-
-}
+package org.scribe.examples;
+
+import java.util.Scanner;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class SkyrockExample
+{
+ private static final String PROTECTED_RESOURCE_URL = "https://api.skyrock.com/v2/user/get.json";
+
+ public static void main(String[] args)
+ {
+ OAuthService service = new ServiceBuilder()
+ .provider(SkyrockApi.class)
+ .apiKey("your-api-key")
+ .apiSecret("your-api-secret")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Skyrock'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();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ 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);
+ 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! :)");
+
+ }
+
+}
diff --git a/src/test/java/org/scribe/examples/SohuWeiboExample.java b/src/apis/examples/SohuWeiboExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/SohuWeiboExample.java
rename to src/apis/examples/SohuWeiboExample.java
index 49dd9fb72..248d0d189 100644
--- a/src/test/java/org/scribe/examples/SohuWeiboExample.java
+++ b/src/apis/examples/SohuWeiboExample.java
@@ -1,68 +1,68 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class SohuWeiboExample
-{
- private static final String NETWORK_NAME = "SohuWeibo";
- private static final String PROTECTED_RESOURCE_URL = "http://api.t.sohu.com/account/verify_credentials.json";
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your_key";
- String apiSecret = "your_secret";
- OAuthService service = new ServiceBuilder()
- .provider(SohuWeiboApi.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Grab a request token.
- System.out.println("Fetching request token.");
- Token requestToken = service.getRequestToken();
- System.out.println("Got it ... ");
- System.out.println(requestToken.getToken());
-
- // 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.GET, PROTECTED_RESOURCE_URL);
- 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! :)");
- }
-}
+package org.scribe.examples;
+
+import java.util.*;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class SohuWeiboExample
+{
+ private static final String NETWORK_NAME = "SohuWeibo";
+ private static final String PROTECTED_RESOURCE_URL = "http://api.t.sohu.com/account/verify_credentials.json";
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ String apiKey = "your_key";
+ String apiSecret = "your_secret";
+ OAuthService service = new ServiceBuilder()
+ .provider(SohuWeiboApi.class)
+ .apiKey(apiKey)
+ .apiSecret(apiSecret)
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Grab a request token.
+ System.out.println("Fetching request token.");
+ Token requestToken = service.getRequestToken();
+ System.out.println("Got it ... ");
+ System.out.println(requestToken.getToken());
+
+ // 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.GET, PROTECTED_RESOURCE_URL);
+ 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! :)");
+ }
+}
diff --git a/src/test/java/org/scribe/examples/TrelloExample.java b/src/apis/examples/TrelloExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/TrelloExample.java
rename to src/apis/examples/TrelloExample.java
index 9888f5e90..5f82676fa 100644
--- a/src/test/java/org/scribe/examples/TrelloExample.java
+++ b/src/apis/examples/TrelloExample.java
@@ -1,60 +1,60 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class TrelloExample
-{
- private static final String API_KEY = "your_api_key";
- private static final String API_SECRET = "your_api_secret";
- private static final String PROTECTED_RESOURCE_URL = "https://trello.com/1/members/me";
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(TrelloApi.class)
- .apiKey(API_KEY)
- .apiSecret(API_SECRET)
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Trello'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-
-}
+package org.scribe.examples;
+
+import java.util.Scanner;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class TrelloExample
+{
+ private static final String API_KEY = "your_api_key";
+ private static final String API_SECRET = "your_api_secret";
+ private static final String PROTECTED_RESOURCE_URL = "https://trello.com/1/members/me";
+ public static void main(String[] args)
+ {
+ OAuthService service = new ServiceBuilder()
+ .provider(TrelloApi.class)
+ .apiKey(API_KEY)
+ .apiSecret(API_SECRET)
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Trello'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();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ 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);
+ Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+
+}
diff --git a/src/test/java/org/scribe/examples/TwitterExample.java b/src/apis/examples/TwitterExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/TwitterExample.java
rename to src/apis/examples/TwitterExample.java
index b68aee087..b93ecbad3 100644
--- a/src/test/java/org/scribe/examples/TwitterExample.java
+++ b/src/apis/examples/TwitterExample.java
@@ -1,61 +1,61 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class TwitterExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.twitter.com/1.1/account/verify_credentials.json";
-
- public static void main(String[] args)
- {
- // If you choose to use a callback, "oauth_verifier" will be the return value by Twitter (request param)
- OAuthService service = new ServiceBuilder()
- .provider(TwitterApi.class)
- .apiKey("6icbcAXyZx67r8uTAUM5Qw")
- .apiSecret("SCCAdUUc6LXxiazxH3N0QfpNUvlUy84mZ2XZKiv39s")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Twitter'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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.POST, PROTECTED_RESOURCE_URL);
- request.addBodyParameter("status", "this is sparta! *");
- 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.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-
+package org.scribe.examples;
+
+import java.util.Scanner;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class TwitterExample
+{
+ private static final String PROTECTED_RESOURCE_URL = "http://api.twitter.com/1.1/account/verify_credentials.json";
+
+ public static void main(String[] args)
+ {
+ // If you choose to use a callback, "oauth_verifier" will be the return value by Twitter (request param)
+ OAuthService service = new ServiceBuilder()
+ .provider(TwitterApi.class)
+ .apiKey("6icbcAXyZx67r8uTAUM5Qw")
+ .apiSecret("SCCAdUUc6LXxiazxH3N0QfpNUvlUy84mZ2XZKiv39s")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Twitter'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();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ 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.POST, PROTECTED_RESOURCE_URL);
+ request.addBodyParameter("status", "this is sparta! *");
+ 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.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+
}
\ No newline at end of file
diff --git a/src/test/java/org/scribe/examples/ViadeoExample.java b/src/apis/examples/ViadeoExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/ViadeoExample.java
rename to src/apis/examples/ViadeoExample.java
index ebb438532..0189b9594 100644
--- a/src/test/java/org/scribe/examples/ViadeoExample.java
+++ b/src/apis/examples/ViadeoExample.java
@@ -1,64 +1,64 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class ViadeoExample
-{
- private static final String NETWORK_NAME = "Viadeo";
- private static final String PROTECTED_RESOURCE_URL = "https://api.viadeo.com/me?user_detail=full";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your_app_id";
- String apiSecret = "your_api_secret";
- OAuthService service = new ServiceBuilder()
- .provider(ViadeoApi.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .callback("http://www.example.com/oauth_callback/")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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(EMPTY_TOKEN, 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);
- 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! :)");
-
- }
-}
+package org.scribe.examples;
+
+import java.util.*;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class ViadeoExample
+{
+ private static final String NETWORK_NAME = "Viadeo";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.viadeo.com/me?user_detail=full";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ String apiKey = "your_app_id";
+ String apiSecret = "your_api_secret";
+ OAuthService service = new ServiceBuilder()
+ .provider(ViadeoApi.class)
+ .apiKey(apiKey)
+ .apiSecret(apiSecret)
+ .callback("http://www.example.com/oauth_callback/")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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(EMPTY_TOKEN, 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);
+ 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! :)");
+
+ }
+}
diff --git a/src/test/java/org/scribe/examples/VkontakteExample.java b/src/apis/examples/VkontakteExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/VkontakteExample.java
rename to src/apis/examples/VkontakteExample.java
index f9e4134e7..2d0d51efe 100644
--- a/src/test/java/org/scribe/examples/VkontakteExample.java
+++ b/src/apis/examples/VkontakteExample.java
@@ -1,68 +1,68 @@
-package org.scribe.examples;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-import java.util.*;
-
-/**
- * @author Boris G. Tsirkin
- * @since 20.4.2011
- */
-public class VkontakteExample
-{
- private static final String NETWORK_NAME = "Vkontakte.ru";
- private static final String PROTECTED_RESOURCE_URL = "https://api.vkontakte.ru/method/friends.get";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- final String clientId = "your app id";
- final String apiSecret = "your api secret";
- OAuthService service = new ServiceBuilder()
- .provider(VkontakteApi.class)
- .apiKey(clientId)
- .apiSecret(apiSecret)
- .scope("friends,wall,offline") // replace with desired scope
- .callback("http://your.site.com/callback")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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(EMPTY_TOKEN, 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);
- 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! :)");
- }
-}
+package org.scribe.examples;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+import java.util.*;
+
+/**
+ * @author Boris G. Tsirkin
+ * @since 20.4.2011
+ */
+public class VkontakteExample
+{
+ private static final String NETWORK_NAME = "Vkontakte.ru";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.vkontakte.ru/method/friends.get";
+ private static final Token EMPTY_TOKEN = null;
+
+ public static void main(String[] args)
+ {
+ // Replace these with your own api key and secret
+ final String clientId = "your app id";
+ final String apiSecret = "your api secret";
+ OAuthService service = new ServiceBuilder()
+ .provider(VkontakteApi.class)
+ .apiKey(clientId)
+ .apiSecret(apiSecret)
+ .scope("friends,wall,offline") // replace with desired scope
+ .callback("http://your.site.com/callback")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
+ System.out.println();
+
+ // Obtain the Authorization URL
+ System.out.println("Fetching the Authorization URL...");
+ String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
+ 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(EMPTY_TOKEN, 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);
+ 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! :)");
+ }
+}
diff --git a/src/test/java/org/scribe/examples/XingExample.java b/src/apis/examples/XingExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/XingExample.java
rename to src/apis/examples/XingExample.java
index 93d7080c4..bea0c3b6a 100755
--- a/src/test/java/org/scribe/examples/XingExample.java
+++ b/src/apis/examples/XingExample.java
@@ -1,59 +1,59 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class XingExample
-{
- private static final String PROTECTED_RESOURCE_URL = "https://api.xing.com/v1/users/me";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(XingApi.class)
- .apiKey("097ccfd3ef25a1cb6d75")
- .apiSecret("e43364b2afd5d92f2ec28951a75bd8075f9cc221")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Xing'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-
-}
+package org.scribe.examples;
+
+import java.util.Scanner;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class XingExample
+{
+ private static final String PROTECTED_RESOURCE_URL = "https://api.xing.com/v1/users/me";
+
+ public static void main(String[] args)
+ {
+ OAuthService service = new ServiceBuilder()
+ .provider(XingApi.class)
+ .apiKey("097ccfd3ef25a1cb6d75")
+ .apiSecret("e43364b2afd5d92f2ec28951a75bd8075f9cc221")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Xing'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();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ 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);
+ Response response = request.send();
+ System.out.println("Got it! Lets see what we found...");
+ System.out.println();
+ System.out.println(response.getBody());
+
+ System.out.println();
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
+ }
+
+}
diff --git a/src/test/java/org/scribe/examples/YahooExample.java b/src/apis/examples/YahooExample.java
similarity index 97%
rename from src/test/java/org/scribe/examples/YahooExample.java
rename to src/apis/examples/YahooExample.java
index 2e3f336f0..95e80c6da 100644
--- a/src/test/java/org/scribe/examples/YahooExample.java
+++ b/src/apis/examples/YahooExample.java
@@ -1,60 +1,60 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class YahooExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://social.yahooapis.com/v1/user/A6ROU63MXWDCW3Y5MGCYWVHDJI/profile/status?format=json";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(YahooApi.class)
- .apiKey("dj0yJmk9TXZDWVpNVVdGaVFmJmQ9WVdrOWMweHZXbkZLTkhVbWNHbzlNVEl5TWprd05qUTJNZy0tJnM9Y29uc3VtZXJzZWNyZXQmeD0wMw--")
- .apiSecret("262be559f92a2be20c4c039419018f2b48cdfce9")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Yahoo'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- 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! :)");
-
- }
-}
+package org.scribe.examples;
+
+import java.util.Scanner;
+
+import org.scribe.builder.*;
+import org.scribe.builder.api.*;
+import org.scribe.model.*;
+import org.scribe.oauth.*;
+
+public class YahooExample
+{
+ private static final String PROTECTED_RESOURCE_URL = "http://social.yahooapis.com/v1/user/A6ROU63MXWDCW3Y5MGCYWVHDJI/profile/status?format=json";
+
+ public static void main(String[] args)
+ {
+ OAuthService service = new ServiceBuilder()
+ .provider(YahooApi.class)
+ .apiKey("dj0yJmk9TXZDWVpNVVdGaVFmJmQ9WVdrOWMweHZXbkZLTkhVbWNHbzlNVEl5TWprd05qUTJNZy0tJnM9Y29uc3VtZXJzZWNyZXQmeD0wMw--")
+ .apiSecret("262be559f92a2be20c4c039419018f2b48cdfce9")
+ .build();
+ Scanner in = new Scanner(System.in);
+
+ System.out.println("=== Yahoo'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();
+
+ System.out.println("Now go and authorize Scribe here:");
+ System.out.println(service.getAuthorizationUrl(requestToken));
+ 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);
+ 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! :)");
+
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/AWeberApi.java b/src/apis/org/scribe/builder/api/AWeberApi.java
new file mode 100644
index 000000000..28c4c093c
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/AWeberApi.java
@@ -0,0 +1,21 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class AWeberApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://auth.aweber.com/1.0/oauth/authorize?oauth_token=";
+ private static final String REQUEST_TOKEN_ENDPOINT = "https://auth.aweber.com/1.0/oauth/request_token";
+ private static final String ACCESS_TOKEN_ENDPOINT = "https://auth.aweber.com/1.0/oauth/access_token";
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_ENDPOINT;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_ENDPOINT;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/DiggApi.java b/src/apis/org/scribe/builder/api/DiggApi.java
new file mode 100644
index 000000000..03486f5c2
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/DiggApi.java
@@ -0,0 +1,22 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class DiggApi extends DefaultApi10a {
+
+ private static final String AUTHORIZE_URL = "http://digg.com/oauth/authorize?oauth_token=";
+ private static final String BASE_URL = "http://services.digg.com/oauth/";
+
+ public String getRequestTokenEndpoint() {
+ return BASE_URL + "request_token";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return BASE_URL + "access_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+}
diff --git a/src/main/java/org/scribe/builder/api/DropBoxApi.java b/src/apis/org/scribe/builder/api/DropBoxApi.java
similarity index 93%
rename from src/main/java/org/scribe/builder/api/DropBoxApi.java
rename to src/apis/org/scribe/builder/api/DropBoxApi.java
index 86f4a71a1..641278857 100644
--- a/src/main/java/org/scribe/builder/api/DropBoxApi.java
+++ b/src/apis/org/scribe/builder/api/DropBoxApi.java
@@ -4,19 +4,19 @@
public class DropBoxApi extends DefaultApi10a
{
- @Override
+
public String getAccessTokenEndpoint()
{
return "https://api.dropbox.com/1/oauth/access_token";
}
- @Override
+
public String getAuthorizationUrl(Token requestToken)
{
return "https://www.dropbox.com/1/oauth/authorize?oauth_token="+requestToken.getToken();
}
- @Override
+
public String getRequestTokenEndpoint()
{
return "https://api.dropbox.com/1/oauth/request_token";
diff --git a/src/apis/org/scribe/builder/api/EvernoteApi.java b/src/apis/org/scribe/builder/api/EvernoteApi.java
new file mode 100644
index 000000000..3ac9b707b
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/EvernoteApi.java
@@ -0,0 +1,35 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class EvernoteApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://www.evernote.com/OAuth.action?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return "https://www.evernote.com/oauth";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://www.evernote.com/oauth";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public static class Sandbox extends EvernoteApi {
+ private static final String SANDBOX_URL = "https://sandbox.evernote.com";
+
+ public String getRequestTokenEndpoint() {
+ return SANDBOX_URL + "/oauth";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return SANDBOX_URL + "/oauth";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return SANDBOX_URL + "/OAuth.action?oauth_token=" + requestToken.getToken();
+ }
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/FacebookApi.java b/src/apis/org/scribe/builder/api/FacebookApi.java
new file mode 100644
index 000000000..afe17fed4
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/FacebookApi.java
@@ -0,0 +1,29 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.model.OAuthConfig;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
+
+public class FacebookApi extends DefaultApi20 {
+ private static final String AUTHORIZE_URL = "https://www.facebook.com/dialog/oauth?client_id=%clientId%&redirect_uri=%redirectUri%";
+ private static final String SCOPED_PARAMETER = "&scope=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://graph.facebook.com/oauth/access_token";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ Preconditions.checkValidUrl(config.getCallback(),
+ "Must provide a valid url as callback. Facebook does not support OOB");
+
+ // Append scope if present
+ String result = StringUtils.replace(AUTHORIZE_URL, "%clientId%", config.getApiKey());
+ result = StringUtils.replace(result, "redirectUri",
+ OAuthEncoder.encode(config.getCallback()));
+ if (config.hasScope()) {
+ result = result + SCOPED_PARAMETER + config.getScope();
+ }
+ return result;
+ }
+}
diff --git a/src/main/java/org/scribe/builder/api/FlickrApi.java b/src/apis/org/scribe/builder/api/FlickrApi.java
similarity index 95%
rename from src/main/java/org/scribe/builder/api/FlickrApi.java
rename to src/apis/org/scribe/builder/api/FlickrApi.java
index a63043610..f606d2fbe 100644
--- a/src/main/java/org/scribe/builder/api/FlickrApi.java
+++ b/src/apis/org/scribe/builder/api/FlickrApi.java
@@ -14,7 +14,7 @@ public class FlickrApi extends DefaultApi10a
/**
* {@inheritDoc}
*/
- @Override
+
public String getAccessTokenEndpoint()
{
return "http://www.flickr.com/services/oauth/access_token";
@@ -23,7 +23,7 @@ public String getAccessTokenEndpoint()
/**
* {@inheritDoc}
*/
- @Override
+
public String getAuthorizationUrl(Token requestToken)
{
return "http://www.flickr.com/services/oauth/authorize?oauth_token=" + requestToken.getToken();
@@ -32,7 +32,7 @@ public String getAuthorizationUrl(Token requestToken)
/**
* {@inheritDoc}
*/
- @Override
+
public String getRequestTokenEndpoint()
{
return "http://www.flickr.com/services/oauth/request_token";
diff --git a/src/apis/org/scribe/builder/api/Foursquare2Api.java b/src/apis/org/scribe/builder/api/Foursquare2Api.java
new file mode 100644
index 000000000..63f2cb0b7
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/Foursquare2Api.java
@@ -0,0 +1,28 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.extractors.JsonTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
+
+public class Foursquare2Api extends DefaultApi20 {
+ private static final String AUTHORIZE_URL = "https://foursquare.com/oauth2/authenticate?client_id=%clientId%&response_type=code&redirect_uri=%redirectUri%";
+
+ public String getAccessTokenEndpoint() {
+ return "https://foursquare.com/oauth2/access_token?grant_type=authorization_code";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ Preconditions.checkValidUrl(config.getCallback(),
+ "Must provide a valid url as callback. Foursquare2 does not support OOB");
+ final String result = StringUtils.replace(AUTHORIZE_URL, "clientId", config.getApiKey());
+ StringUtils.replace(result, "redirectUri", OAuthEncoder.encode(config.getCallback()));
+ return result;
+ }
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new JsonTokenExtractor();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/FoursquareApi.java b/src/apis/org/scribe/builder/api/FoursquareApi.java
new file mode 100644
index 000000000..c27ffc33b
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/FoursquareApi.java
@@ -0,0 +1,19 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class FoursquareApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "http://foursquare.com/oauth/authorize?oauth_token=%s";
+
+ public String getAccessTokenEndpoint() {
+ return "http://foursquare.com/oauth/access_token";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "http://foursquare.com/oauth/request_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/FreelancerApi.java b/src/apis/org/scribe/builder/api/FreelancerApi.java
new file mode 100644
index 000000000..4c37316d4
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/FreelancerApi.java
@@ -0,0 +1,44 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+
+public class FreelancerApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "http://www.freelancer.com/users/api-token/auth.php?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "http://api.freelancer.com/RequestAccessToken/requestAccessToken.xml?";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "http://api.freelancer.com/RequestRequestToken/requestRequestToken.xml";
+ }
+
+ public Verb getAccessTokenVerb() {
+ return Verb.GET;
+ }
+
+ public Verb getRequestTokenVerb() {
+ return Verb.GET;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public static class Sandbox extends FreelancerApi {
+ private static final String SANDBOX_AUTHORIZATION_URL = "http://www.sandbox.freelancer.com/users/api-token/auth.php";
+
+ public String getRequestTokenEndpoint() {
+ return "http://api.sandbox.freelancer.com/RequestRequestToken/requestRequestToken.xml";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "http://api.sandbox.freelancer.com/RequestAccessToken/requestAccessToken.xml?";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return SANDBOX_AUTHORIZATION_URL + "?oauth_token=" + requestToken.getToken();
+ }
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/GetGlueApi.java b/src/apis/org/scribe/builder/api/GetGlueApi.java
new file mode 100644
index 000000000..07fbb7784
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/GetGlueApi.java
@@ -0,0 +1,22 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class GetGlueApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "http://getglue.com/oauth/authorize?oauth_token=";
+ private static final String REQUEST_TOKEN_RESOURCE = "https://api.getglue.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_RESOURCE = "https://api.getglue.com/oauth/access_token";
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_RESOURCE;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_RESOURCE;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+}
diff --git a/src/apis/org/scribe/builder/api/GoogleApi.java b/src/apis/org/scribe/builder/api/GoogleApi.java
new file mode 100644
index 000000000..703d5ae7e
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/GoogleApi.java
@@ -0,0 +1,28 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+
+public class GoogleApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://www.google.com/accounts/OAuthGetAccessToken";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "https://www.google.com/accounts/OAuthGetRequestToken";
+ }
+
+ public Verb getAccessTokenVerb() {
+ return Verb.GET;
+ }
+
+ public Verb getRequestTokenVerb() {
+ return Verb.GET;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/ImgUrApi.java b/src/apis/org/scribe/builder/api/ImgUrApi.java
new file mode 100644
index 000000000..b039262d2
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/ImgUrApi.java
@@ -0,0 +1,24 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+/**
+ * OAuth API for ImgUr
+ *
+ * @author David Wursteisen
+ * @see ImgUr API
+ */
+public class ImgUrApi extends DefaultApi10a {
+
+ public String getRequestTokenEndpoint() {
+ return "https://api.imgur.com/oauth/request_token";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.imgur.com/oauth/access_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return "https://api.imgur.com/oauth/authorize?oauth_token=" + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/KaixinApi.java b/src/apis/org/scribe/builder/api/KaixinApi.java
new file mode 100644
index 000000000..2e90af598
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/KaixinApi.java
@@ -0,0 +1,30 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+
+public class KaixinApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "http://api.kaixin001.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_URL = "http://api.kaixin001.com/oauth/access_token";
+ private static final String AUTHORIZE_URL = "http://api.kaixin001.com/oauth/authorize?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public Verb getRequestTokenVerb() {
+ return Verb.GET;
+ }
+
+ public Verb getAccessTokenVerb() {
+ return Verb.GET;
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/KaixinApi20.java b/src/apis/org/scribe/builder/api/KaixinApi20.java
new file mode 100644
index 000000000..5f2d0aab4
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/KaixinApi20.java
@@ -0,0 +1,34 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.extractors.JsonTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.utils.OAuthEncoder;
+
+/**
+ * Kaixin(http://www.kaixin001.com/) open platform api based on OAuth 2.0.
+ */
+public class KaixinApi20 extends DefaultApi20 {
+
+ private static final String AUTHORIZE_URL = "http://api.kaixin001.com/oauth2/authorize?client_id=%clientId%&redirect_uri=%redirectUri%&response_type=code";
+ private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=";
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new JsonTokenExtractor();
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.kaixin001.com/oauth2/access_token?grant_type=authorization_code";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ String result = StringUtils.replace(AUTHORIZE_URL, "clientId", config.getApiKey());
+ StringUtils.replace(result, "%redirectUri%", OAuthEncoder.encode(config.getCallback()));
+ // Append scope if present
+ if (config.hasScope()) {
+ result = SCOPED_AUTHORIZE_URL + OAuthEncoder.encode(config.getScope());
+ }
+ return result;
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/LinkedInApi.java b/src/apis/org/scribe/builder/api/LinkedInApi.java
new file mode 100644
index 000000000..4e59dcd62
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/LinkedInApi.java
@@ -0,0 +1,53 @@
+package org.scribe.builder.api;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.scribe.model.Token;
+
+public class LinkedInApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://api.linkedin.com/uas/oauth/authenticate?oauth_token=";
+ private static final String REQUEST_TOKEN_URL = "https://api.linkedin.com/uas/oauth/requestToken";
+
+ private final Set/**/scopes;
+
+ public LinkedInApi() {
+ scopes = new HashSet();//.emptySet();
+ }
+
+ public LinkedInApi(final Set/**/scopes) {
+ this.scopes = Collections.unmodifiableSet(scopes);
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.linkedin.com/uas/oauth/accessToken";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return scopes.isEmpty() ? REQUEST_TOKEN_URL : REQUEST_TOKEN_URL + "?scope="
+ + scopesAsString();
+ }
+
+ private String scopesAsString() {
+ final StringBuilder builder = new StringBuilder();
+ final Iterator i = scopes.iterator();
+ while (i.hasNext()) {
+ final String scope = (String) i.next();
+ builder.append("+" + scope);
+ }
+ return builder.substring(1);
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public static LinkedInApi withScopes(final String[] scopes) {
+ final Set/**/scopeSet = new HashSet/**/(Arrays.asList(scopes));
+ return new LinkedInApi(scopeSet);
+ }
+
+}
diff --git a/src/apis/org/scribe/builder/api/LiveApi.java b/src/apis/org/scribe/builder/api/LiveApi.java
new file mode 100644
index 000000000..51d784c21
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/LiveApi.java
@@ -0,0 +1,31 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.extractors.JsonTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.utils.OAuthEncoder;
+
+public class LiveApi extends DefaultApi20 {
+
+ private static final String AUTHORIZE_URL = "https://oauth.live.com/authorize?client_id=%clientId%&redirect_uri=%responseUri%&response_type=code";
+ private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://oauth.live.com/token?grant_type=authorization_code";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ String result = StringUtils.replace(AUTHORIZE_URL, "clientId", config.getApiKey());
+ StringUtils.replace(result, "%redirectUri%", OAuthEncoder.encode(config.getCallback()));
+ // Append scope if present
+ if (config.hasScope()) {
+ result = SCOPED_AUTHORIZE_URL + OAuthEncoder.encode(config.getScope());
+ }
+ return result;
+ }
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new JsonTokenExtractor();
+ }
+}
\ No newline at end of file
diff --git a/src/apis/org/scribe/builder/api/LoveFilmApi.java b/src/apis/org/scribe/builder/api/LoveFilmApi.java
new file mode 100644
index 000000000..fa4cb5135
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/LoveFilmApi.java
@@ -0,0 +1,21 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class LoveFilmApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "http://openapi.lovefilm.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_URL = "http://openapi.lovefilm.com/oauth/access_token";
+ private static final String AUTHORIZE_URL = "https://www.lovefilm.com/activate?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/MeetupApi.java b/src/apis/org/scribe/builder/api/MeetupApi.java
new file mode 100644
index 000000000..c97fa5e0e
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/MeetupApi.java
@@ -0,0 +1,23 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+/**
+ * OAuth access to the Meetup.com API.
+ * For more information visit http://www.meetup.com/api
+ */
+public class MeetupApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "http://www.meetup.com/authenticate?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return "http://api.meetup.com/oauth/request/";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "http://api.meetup.com/oauth/access/";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/MendeleyApi.java b/src/apis/org/scribe/builder/api/MendeleyApi.java
new file mode 100644
index 000000000..cbcaa4ec7
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/MendeleyApi.java
@@ -0,0 +1,33 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+
+/**
+ * @author Arieh "Vainolo" Bibliowicz
+ * @see http://apidocs.mendeley.com/home/authentication
+ */
+public class MendeleyApi extends DefaultApi10a {
+
+ private static final String AUTHORIZE_URL = "http://api.mendeley.com/oauth/authorize?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return "http://api.mendeley.com/oauth/request_token/";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "http://api.mendeley.com/oauth/access_token/";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public Verb getAccessTokenVerb() {
+ return Verb.GET;
+ }
+
+ public Verb getRequestTokenVerb() {
+ return Verb.GET;
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/MisoApi.java b/src/apis/org/scribe/builder/api/MisoApi.java
new file mode 100644
index 000000000..57d231729
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/MisoApi.java
@@ -0,0 +1,22 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class MisoApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "http://gomiso.com/oauth/authorize?oauth_token=";
+ private static final String REQUEST_TOKEN_RESOURCE = "http://gomiso.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_RESOURCE = "http://gomiso.com/oauth/access_token";
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_RESOURCE;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_RESOURCE;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+}
diff --git a/src/apis/org/scribe/builder/api/NetProspexApi.java b/src/apis/org/scribe/builder/api/NetProspexApi.java
new file mode 100644
index 000000000..afd550029
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/NetProspexApi.java
@@ -0,0 +1,21 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class NetProspexApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "https://api.netprospex.com/1.0/oauth/request-token";
+ private static final String ACCESS_TOKEN_URL = "https://api.netprospex.com/1.0/oauth/access-token";
+ private static final String AUTHORIZE_URL = "https://api.netprospex.com/1.0/oauth/authorize?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/NeteaseWeibooApi.java b/src/apis/org/scribe/builder/api/NeteaseWeibooApi.java
new file mode 100644
index 000000000..4e13977d5
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/NeteaseWeibooApi.java
@@ -0,0 +1,39 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class NeteaseWeibooApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "http://api.t.163.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_URL = "http://api.t.163.com/oauth/access_token";
+ private static final String AUTHORIZE_URL = "http://api.t.163.com/oauth/authorize?oauth_token=";
+ private static final String AUTHENTICATE_URL = "http://api.t.163.com/oauth/authenticate?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ /**
+ * this method will ignore your callback
+ * if you're creating a desktop client please choose this url
+ * else your can call getAuthenticateUrl
+ *
+ * via http://open.t.163.com/wiki/index.php?title=%E8%AF%B7%E6%B1%82%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83Token(oauth/authorize)
+ */
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ /**
+ * this method is for web client with callback url
+ * if you're creating a desktop client please call getAuthorizationUrl
+ *
+ * via http://open.t.163.com/wiki/index.php?title=%E8%AF%B7%E6%B1%82%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83Token(oauth/authenticate)
+ */
+ public String getAuthenticateUrl(final Token requestToken) {
+ return AUTHENTICATE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/PlurkApi.java b/src/apis/org/scribe/builder/api/PlurkApi.java
new file mode 100644
index 000000000..4577f34e2
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/PlurkApi.java
@@ -0,0 +1,29 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class PlurkApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "http://www.plurk.com/OAuth/request_token";
+ private static final String AUTHORIZE_URL = "http://www.plurk.com/OAuth/authorize?oauth_token=";
+ private static final String ACCESS_TOKEN_URL = "http://www.plurk.com/OAuth/access_token";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ public static class Mobile extends PlurkApi {
+ private static final String AUTHORIZE_URL = "http://www.plurk.com/m/authorize?oauth_token=";
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/Px500Api.java b/src/apis/org/scribe/builder/api/Px500Api.java
new file mode 100644
index 000000000..ae605fcd3
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/Px500Api.java
@@ -0,0 +1,19 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class Px500Api extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://api.500px.com/v1/oauth/authorize?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.500px.com/v1/oauth/access_token";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "https://api.500px.com/v1/oauth/request_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
\ No newline at end of file
diff --git a/src/apis/org/scribe/builder/api/QWeiboApi.java b/src/apis/org/scribe/builder/api/QWeiboApi.java
new file mode 100644
index 000000000..9c556569d
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/QWeiboApi.java
@@ -0,0 +1,21 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class QWeiboApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "https://open.t.qq.com/cgi-bin/request_token";
+ private static final String ACCESS_TOKEN_URL = "https://open.t.qq.com/cgi-bin/access_token";
+ private static final String AUTHORIZE_URL = "https://open.t.qq.com/cgi-bin/authorize?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/RenrenApi.java b/src/apis/org/scribe/builder/api/RenrenApi.java
new file mode 100644
index 000000000..e79300bb3
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/RenrenApi.java
@@ -0,0 +1,33 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.extractors.JsonTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.utils.OAuthEncoder;
+
+/**
+ * Renren(http://www.renren.com/) OAuth 2.0 based api.
+ */
+public class RenrenApi extends DefaultApi20 {
+ private static final String AUTHORIZE_URL = "https://graph.renren.com/oauth/authorize?client_id=%clientId%&redirect_uri=%redirectUri%&response_type=code";
+ private static final String SCOPED_PARAMETER = "&scope=";
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new JsonTokenExtractor();
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://graph.renren.com/oauth/token?grant_type=authorization_code";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ String result = StringUtils.replace(AUTHORIZE_URL, "clientId", config.getApiKey());
+ StringUtils.replace(result, "redirectUri", OAuthEncoder.encode(config.getCallback()));
+ // Append scope if present
+ if (config.hasScope()) {
+ result = result + SCOPED_PARAMETER + OAuthEncoder.encode(config.getScope());
+ }
+ return result;
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/SapoApi.java b/src/apis/org/scribe/builder/api/SapoApi.java
new file mode 100644
index 000000000..b714d824b
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/SapoApi.java
@@ -0,0 +1,30 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+
+public class SapoApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://id.sapo.pt/oauth/authorize?oauth_token=";
+ private static final String ACCESS_URL = "https://id.sapo.pt/oauth/access_token";
+ private static final String REQUEST_URL = "https://id.sapo.pt/oauth/request_token";
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_URL;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public Verb getRequestTokenVerb() {
+ return Verb.GET;
+ }
+
+ public Verb getAccessTokenVerb() {
+ return Verb.GET;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/builder/api/SimpleGeoApi.java b/src/apis/org/scribe/builder/api/SimpleGeoApi.java
similarity index 93%
rename from src/main/java/org/scribe/builder/api/SimpleGeoApi.java
rename to src/apis/org/scribe/builder/api/SimpleGeoApi.java
index 3e19df70a..b548e056f 100644
--- a/src/main/java/org/scribe/builder/api/SimpleGeoApi.java
+++ b/src/apis/org/scribe/builder/api/SimpleGeoApi.java
@@ -9,19 +9,19 @@ public class SimpleGeoApi extends DefaultApi10a
{
private static final String ENDPOINT = "these are not used since SimpleGeo uses 2 legged OAuth";
- @Override
+
public String getRequestTokenEndpoint()
{
return ENDPOINT;
}
- @Override
+
public String getAccessTokenEndpoint()
{
return ENDPOINT;
}
- @Override
+
public String getAuthorizationUrl(Token requestToken)
{
return ENDPOINT;
diff --git a/src/apis/org/scribe/builder/api/SinaWeiboApi.java b/src/apis/org/scribe/builder/api/SinaWeiboApi.java
new file mode 100644
index 000000000..add472709
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/SinaWeiboApi.java
@@ -0,0 +1,21 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class SinaWeiboApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "http://api.t.sina.com.cn/oauth/request_token";
+ private static final String ACCESS_TOKEN_URL = "http://api.t.sina.com.cn/oauth/access_token";
+ private static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/SinaWeiboApi20.java b/src/apis/org/scribe/builder/api/SinaWeiboApi20.java
new file mode 100644
index 000000000..e4b2abc99
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/SinaWeiboApi20.java
@@ -0,0 +1,38 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.extractors.JsonTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.Verb;
+import org.scribe.utils.OAuthEncoder;
+
+/**
+ * SinaWeibo OAuth 2.0 api.
+ */
+public class SinaWeiboApi20 extends DefaultApi20 {
+ private static final String AUTHORIZE_URL = "https://api.weibo.com/oauth2/authorize?client_id=%clientId%&redirect_uri=%redirectUri%&response_type=code";
+ private static final String SCOPED_PARAMETER = "&scope=";
+
+ public Verb getAccessTokenVerb() {
+ return Verb.POST;
+ }
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new JsonTokenExtractor();
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.weibo.com/oauth2/access_token?grant_type=authorization_code";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ String result = StringUtils.replace(AUTHORIZE_URL, "clientId", config.getApiKey());
+ StringUtils.replace(result, "redirectUri", OAuthEncoder.encode(config.getCallback()));
+ // Append scope if present
+ if (config.hasScope()) {
+ result = result + SCOPED_PARAMETER + OAuthEncoder.encode(config.getScope());
+ }
+ return result;
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/SkyrockApi.java b/src/apis/org/scribe/builder/api/SkyrockApi.java
new file mode 100644
index 000000000..0e301901c
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/SkyrockApi.java
@@ -0,0 +1,28 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+/**
+ * OAuth API for Skyrock.
+ *
+ * @author Nicolas Quiénot
+ * @see Skyrock.com API
+ */
+public class SkyrockApi extends DefaultApi10a {
+ private static final String API_ENDPOINT = "https://api.skyrock.com/v2";
+ private static final String REQUEST_TOKEN_RESOURCE = "/oauth/initiate";
+ private static final String AUTHORIZE_URL = "/oauth/authorize?oauth_token=";
+ private static final String ACCESS_TOKEN_RESOURCE = "/oauth/token";
+
+ public String getAccessTokenEndpoint() {
+ return API_ENDPOINT + ACCESS_TOKEN_RESOURCE;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return API_ENDPOINT + REQUEST_TOKEN_RESOURCE;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return API_ENDPOINT + AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/SohuWeiboApi.java b/src/apis/org/scribe/builder/api/SohuWeiboApi.java
new file mode 100644
index 000000000..c89912cce
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/SohuWeiboApi.java
@@ -0,0 +1,21 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class SohuWeiboApi extends DefaultApi10a {
+ private static final String REQUEST_TOKEN_URL = "http://api.t.sohu.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_URL = "http://api.t.sohu.com/oauth/access_token";
+ private static final String AUTHORIZE_URL = "http://api.t.sohu.com/oauth/authorize?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_URL;
+ }
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_URL;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/TrelloApi.java b/src/apis/org/scribe/builder/api/TrelloApi.java
new file mode 100644
index 000000000..7cdebf173
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/TrelloApi.java
@@ -0,0 +1,20 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class TrelloApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://trello.com/1/OAuthAuthorizeToken?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://trello.com/1/OAuthGetAccessToken";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "https://trello.com/1/OAuthGetRequestToken";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+}
diff --git a/src/apis/org/scribe/builder/api/TumblrApi.java b/src/apis/org/scribe/builder/api/TumblrApi.java
new file mode 100644
index 000000000..58e8d73cb
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/TumblrApi.java
@@ -0,0 +1,21 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class TumblrApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://www.tumblr.com/oauth/authorize?oauth_token=";
+ private static final String REQUEST_TOKEN_RESOURCE = "http://www.tumblr.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_RESOURCE = "http://www.tumblr.com/oauth/access_token";
+
+ public String getAccessTokenEndpoint() {
+ return ACCESS_TOKEN_RESOURCE;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return REQUEST_TOKEN_RESOURCE;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/TwitterApi.java b/src/apis/org/scribe/builder/api/TwitterApi.java
new file mode 100644
index 000000000..a9000c695
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/TwitterApi.java
@@ -0,0 +1,53 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class TwitterApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://api.twitter.com/oauth/authorize?oauth_token=";
+ private static final String REQUEST_TOKEN_RESOURCE = "api.twitter.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_RESOURCE = "api.twitter.com/oauth/access_token";
+
+ public String getAccessTokenEndpoint() {
+ return "http://" + ACCESS_TOKEN_RESOURCE;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "http://" + REQUEST_TOKEN_RESOURCE;
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public static class SSL extends TwitterApi {
+
+ public String getAccessTokenEndpoint() {
+ return "https://" + ACCESS_TOKEN_RESOURCE;
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "https://" + REQUEST_TOKEN_RESOURCE;
+ }
+ }
+
+ /**
+ * Twitter 'friendlier' authorization endpoint for OAuth.
+ *
+ * Uses SSL.
+ */
+ public static class Authenticate extends SSL {
+ private static final String AUTHENTICATE_URL = "https://api.twitter.com/oauth/authenticate?oauth_token=";
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHENTICATE_URL + requestToken.getToken();
+ }
+ }
+
+ /**
+ * Just an alias to the default (SSL) authorization endpoint.
+ *
+ * Need to include this for symmetry with 'Authenticate' only.
+ */
+ public static class Authorize extends SSL {
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/UbuntuOneApi.java b/src/apis/org/scribe/builder/api/UbuntuOneApi.java
new file mode 100644
index 000000000..95af23d89
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/UbuntuOneApi.java
@@ -0,0 +1,32 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+import org.scribe.services.PlaintextSignatureService;
+import org.scribe.services.SignatureService;
+
+/**
+ * @author Julio Gutierrez
+ *
+ * Sep 6, 2012
+ */
+public class UbuntuOneApi extends DefaultApi10a {
+
+ private static final String AUTHORIZE_URL = "https://one.ubuntu.com/oauth/authorize/?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://one.ubuntu.com/oauth/access/";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "https://one.ubuntu.com/oauth/request/";
+ }
+
+ public SignatureService getSignatureService() {
+ return new PlaintextSignatureService();
+ }
+
+}
diff --git a/src/apis/org/scribe/builder/api/ViadeoApi.java b/src/apis/org/scribe/builder/api/ViadeoApi.java
new file mode 100644
index 000000000..70e0a807e
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/ViadeoApi.java
@@ -0,0 +1,33 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.extractors.JsonTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
+
+public class ViadeoApi extends DefaultApi20 {
+ private static final String AUTHORIZE_URL = "https://secure.viadeo.com/oauth-provider/authorize2?client_id=%clientId%&redirect_uri=%redirectUri%&response_type=code";
+ private static final String SCOPED_PARAMETER = "&scope=";
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new JsonTokenExtractor();
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://secure.viadeo.com/oauth-provider/access_token2?grant_type=authorization_code";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ Preconditions.checkValidUrl(config.getCallback(),
+ "Must provide a valid url as callback. Viadeo does not support OOB");
+ String result = StringUtils.replace(AUTHORIZE_URL, "clientId", config.getApiKey());
+ StringUtils.replace(result, "redirectUri", OAuthEncoder.encode(config.getCallback()));
+ // Append scope if present
+ if (config.hasScope()) {
+ result = result + SCOPED_PARAMETER + OAuthEncoder.encode(config.getScope());
+ }
+ return result;
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/VimeoApi.java b/src/apis/org/scribe/builder/api/VimeoApi.java
new file mode 100644
index 000000000..6abb059ab
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/VimeoApi.java
@@ -0,0 +1,19 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class VimeoApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "http://vimeo.com/oauth/authorize?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "http://vimeo.com/oauth/access_token";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "http://vimeo.com/oauth/request_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/VkontakteApi.java b/src/apis/org/scribe/builder/api/VkontakteApi.java
new file mode 100644
index 000000000..744403098
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/VkontakteApi.java
@@ -0,0 +1,37 @@
+package org.scribe.builder.api;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.extractors.JsonTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
+
+/**
+ * @author Boris G. Tsirkin
+ * @since 20.4.2011
+ */
+public class VkontakteApi extends DefaultApi20 {
+ private static final String AUTHORIZE_URL = "https://oauth.vk.com/authorize?client_id=%clientId%&redirect_uri=%redirectUri%&response_type=code";
+ private static final String SCOPED_PARAMETER = "&scope=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.vkontakte.ru/oauth/access_token";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ Preconditions.checkValidUrl(config.getCallback(),
+ "Valid url is required for a callback. Vkontakte does not support OOB");
+ String result = StringUtils.replace(AUTHORIZE_URL, "clientId", config.getApiKey());
+ StringUtils.replace(result, "redirectUri", OAuthEncoder.encode(config.getCallback()));
+ // Append scope if present
+ if (config.hasScope()) {
+ result = result + SCOPED_PARAMETER + OAuthEncoder.encode(config.getScope());
+ }
+ return result;
+ }
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new JsonTokenExtractor();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/XingApi.java b/src/apis/org/scribe/builder/api/XingApi.java
new file mode 100755
index 000000000..f4dcfc08e
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/XingApi.java
@@ -0,0 +1,20 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class XingApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://api.xing.com/v1/authorize?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.xing.com/v1/access_token";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "https://api.xing.com/v1/request_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+}
diff --git a/src/apis/org/scribe/builder/api/YahooApi.java b/src/apis/org/scribe/builder/api/YahooApi.java
new file mode 100644
index 000000000..dd592b3ea
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/YahooApi.java
@@ -0,0 +1,19 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+
+public class YahooApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=";
+
+ public String getAccessTokenEndpoint() {
+ return "https://api.login.yahoo.com/oauth/v2/get_token";
+ }
+
+ public String getRequestTokenEndpoint() {
+ return "https://api.login.yahoo.com/oauth/v2/get_request_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+}
diff --git a/src/apis/org/scribe/builder/api/YammerApi.java b/src/apis/org/scribe/builder/api/YammerApi.java
new file mode 100644
index 000000000..0e4d6804b
--- /dev/null
+++ b/src/apis/org/scribe/builder/api/YammerApi.java
@@ -0,0 +1,25 @@
+package org.scribe.builder.api;
+
+import org.scribe.model.Token;
+import org.scribe.services.PlaintextSignatureService;
+import org.scribe.services.SignatureService;
+
+public class YammerApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://www.yammer.com/oauth/authorize?oauth_token=";
+
+ public String getRequestTokenEndpoint() {
+ return "https://www.yammer.com/oauth/request_token";
+ }
+
+ public String getAccessTokenEndpoint() {
+ return "https://www.yammer.com/oauth/access_token";
+ }
+
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
+
+ public SignatureService getSignatureService() {
+ return new PlaintextSignatureService();
+ }
+}
diff --git a/src/main/java/org/scribe/builder/ServiceBuilder.java b/src/main/java/org/scribe/builder/ServiceBuilder.java
index 27f3c8f63..343547126 100644
--- a/src/main/java/org/scribe/builder/ServiceBuilder.java
+++ b/src/main/java/org/scribe/builder/ServiceBuilder.java
@@ -1,11 +1,15 @@
package org.scribe.builder;
-import java.io.*;
-import org.scribe.builder.api.*;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-import org.scribe.utils.*;
+import java.io.OutputStream;
+
+import org.scribe.builder.api.Api;
+import org.scribe.exceptions.OAuthException;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.OAuthConstants;
+import org.scribe.model.OAuthRequestCreatorFactory;
+import org.scribe.model.SignatureType;
+import org.scribe.oauth.OAuthService;
+import org.scribe.utils.Preconditions;
/**
* Implementation of the Builder pattern, with a fluent interface that creates a
@@ -14,156 +18,155 @@
* @author Pablo Fernandez
*
*/
-public class ServiceBuilder
-{
- private String apiKey;
- private String apiSecret;
- private String callback;
- private Api api;
- private String scope;
- private SignatureType signatureType;
- private OutputStream debugStream;
-
- /**
- * Default constructor
- */
- public ServiceBuilder()
- {
- this.callback = OAuthConstants.OUT_OF_BAND;
- this.signatureType = SignatureType.Header;
- this.debugStream = null;
- }
-
- /**
- * Configures the {@link Api}
- *
- * @param apiClass the class of one of the existent {@link Api}s on org.scribe.api package
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- public ServiceBuilder provider(Class extends Api> apiClass)
- {
- this.api = createApi(apiClass);
- return this;
- }
-
- private Api createApi(Class extends Api> apiClass)
- {
- Preconditions.checkNotNull(apiClass, "Api class cannot be null");
- Api api;
- try
- {
- api = apiClass.newInstance();
+public class ServiceBuilder {
+ private String apiKey;
+ private String apiSecret;
+ private String callback;
+ private Api api;
+ private String scope;
+ private SignatureType signatureType;
+ private OutputStream debugStream;
+ private OAuthRequestCreatorFactory requestCreatorFactory;
+
+ /**
+ * Default constructor
+ */
+ public ServiceBuilder() {
+ callback = OAuthConstants.OUT_OF_BAND;
+ signatureType = SignatureType.Header;
+ debugStream = null;
+ }
+
+ /**
+ * Configures the {@link Api}
+ *
+ * @param apiClass the class of one of the existent {@link Api}s on org.scribe.api package
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder provider(final Class/* extends Api>*/apiClass) {
+ api = createApi(apiClass);
+ return this;
}
- catch(Exception e)
- {
- throw new OAuthException("Error while creating the Api object", e);
+
+ private Api createApi(final Class/* extends Api>*/apiClass) {
+ Preconditions.checkNotNull(apiClass, "Api class cannot be null");
+ final Api api;
+ try {
+ final Object o = apiClass.newInstance();
+ if (o instanceof Api) {
+ api = (Api) o;
+ } else {
+ throw new IllegalArgumentException(String.valueOf(apiClass) + " is not an API");
+ }
+ } catch (final Exception e) {
+ throw new OAuthException("Error while creating the Api object", e);
+ }
+ return api;
+ }
+
+ /**
+ * Configures the {@link Api}
+ *
+ * Overloaded version. Let's you use an instance instead of a class.
+ *
+ * @param api instance of {@link Api}s
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder provider(final Api api) {
+ Preconditions.checkNotNull(api, "Api cannot be null");
+ this.api = api;
+ return this;
+ }
+
+ public ServiceBuilder OAuthRequestCreator(final OAuthRequestCreatorFactory requestCreatorFactory) {
+ Preconditions.checkNotNull(requestCreatorFactory, "requestCreatorFactory cannot be null");
+ this.requestCreatorFactory = requestCreatorFactory;
+ return this;
+ }
+
+ /**
+ * Adds an OAuth callback url
+ *
+ * @param callback callback url. Must be a valid url or 'oob' for out of band OAuth
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder callback(final String callback) {
+ Preconditions.checkNotNull(callback, "Callback can't be null");
+ this.callback = callback;
+ return this;
+ }
+
+ /**
+ * Configures the api key
+ *
+ * @param apiKey The api key for your application
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder apiKey(final String apiKey) {
+ Preconditions.checkEmptyString(apiKey, "Invalid Api key");
+ this.apiKey = apiKey;
+ return this;
+ }
+
+ /**
+ * Configures the api secret
+ *
+ * @param apiSecret The api secret for your application
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder apiSecret(final String apiSecret) {
+ Preconditions.checkEmptyString(apiSecret, "Invalid Api secret");
+ this.apiSecret = apiSecret;
+ return this;
+ }
+
+ /**
+ * Configures the OAuth scope. This is only necessary in some APIs (like Google's).
+ *
+ * @param scope The OAuth scope
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder scope(final String scope) {
+ Preconditions.checkEmptyString(scope, "Invalid OAuth scope");
+ this.scope = scope;
+ return this;
+ }
+
+ /**
+ * Configures the signature type, choose between header, querystring, etc. Defaults to Header
+ *
+ * @param scope The OAuth scope
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder signatureType(final SignatureType type) {
+ Preconditions.checkNotNull(type, "Signature type can't be null");
+ signatureType = type;
+ return this;
+ }
+
+ public ServiceBuilder debugStream(final OutputStream stream) {
+ Preconditions.checkNotNull(stream, "debug stream can't be null");
+ debugStream = stream;
+ return this;
+ }
+
+ public ServiceBuilder debug() {
+ this.debugStream(System.out);
+ return this;
+ }
+
+ /**
+ * Returns the fully configured {@link OAuthService}
+ *
+ * @return fully configured {@link OAuthService}
+ */
+ public OAuthService build() {
+ Preconditions.checkNotNull(api,
+ "You must specify a valid api through the provider() method");
+ Preconditions.checkEmptyString(apiKey, "You must provide an api key");
+ Preconditions.checkEmptyString(apiSecret, "You must provide an api secret");
+ final OAuthConfig config = new OAuthConfig(apiKey, apiSecret, callback, signatureType,
+ scope, debugStream, requestCreatorFactory);
+ return api.createService(config);
}
- return api;
- }
-
- /**
- * Configures the {@link Api}
- *
- * Overloaded version. Let's you use an instance instead of a class.
- *
- * @param api instance of {@link Api}s
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- public ServiceBuilder provider(Api api)
- {
- Preconditions.checkNotNull(api, "Api cannot be null");
- this.api = api;
- return this;
- }
-
- /**
- * Adds an OAuth callback url
- *
- * @param callback callback url. Must be a valid url or 'oob' for out of band OAuth
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- public ServiceBuilder callback(String callback)
- {
- Preconditions.checkNotNull(callback, "Callback can't be null");
- this.callback = callback;
- return this;
- }
-
- /**
- * Configures the api key
- *
- * @param apiKey The api key for your application
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- public ServiceBuilder apiKey(String apiKey)
- {
- Preconditions.checkEmptyString(apiKey, "Invalid Api key");
- this.apiKey = apiKey;
- return this;
- }
-
- /**
- * Configures the api secret
- *
- * @param apiSecret The api secret for your application
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- public ServiceBuilder apiSecret(String apiSecret)
- {
- Preconditions.checkEmptyString(apiSecret, "Invalid Api secret");
- this.apiSecret = apiSecret;
- return this;
- }
-
- /**
- * Configures the OAuth scope. This is only necessary in some APIs (like Google's).
- *
- * @param scope The OAuth scope
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- public ServiceBuilder scope(String scope)
- {
- Preconditions.checkEmptyString(scope, "Invalid OAuth scope");
- this.scope = scope;
- return this;
- }
-
- /**
- * Configures the signature type, choose between header, querystring, etc. Defaults to Header
- *
- * @param scope The OAuth scope
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- public ServiceBuilder signatureType(SignatureType type)
- {
- Preconditions.checkNotNull(type, "Signature type can't be null");
- this.signatureType = type;
- return this;
- }
-
- public ServiceBuilder debugStream(OutputStream stream)
- {
- Preconditions.checkNotNull(stream, "debug stream can't be null");
- this.debugStream = stream;
- return this;
- }
-
- public ServiceBuilder debug()
- {
- this.debugStream(System.out);
- return this;
- }
-
- /**
- * Returns the fully configured {@link OAuthService}
- *
- * @return fully configured {@link OAuthService}
- */
- public OAuthService build()
- {
- Preconditions.checkNotNull(api, "You must specify a valid api through the provider() method");
- Preconditions.checkEmptyString(apiKey, "You must provide an api key");
- Preconditions.checkEmptyString(apiSecret, "You must provide an api secret");
- return api.createService(new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream));
- }
}
diff --git a/src/main/java/org/scribe/builder/api/AWeberApi.java b/src/main/java/org/scribe/builder/api/AWeberApi.java
deleted file mode 100644
index 53ae1fc7f..000000000
--- a/src/main/java/org/scribe/builder/api/AWeberApi.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class AWeberApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://auth.aweber.com/1.0/oauth/authorize?oauth_token=%s";
- private static final String REQUEST_TOKEN_ENDPOINT = "https://auth.aweber.com/1.0/oauth/request_token";
- private static final String ACCESS_TOKEN_ENDPOINT = "https://auth.aweber.com/1.0/oauth/access_token";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_ENDPOINT;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_ENDPOINT;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/ConstantContactApi.java b/src/main/java/org/scribe/builder/api/ConstantContactApi.java
index 0588bc40c..2bad4f2ff 100644
--- a/src/main/java/org/scribe/builder/api/ConstantContactApi.java
+++ b/src/main/java/org/scribe/builder/api/ConstantContactApi.java
@@ -1,26 +1,19 @@
package org.scribe.builder.api;
-import org.scribe.model.*;
+import org.scribe.model.Token;
-public class ConstantContactApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://oauth.constantcontact.com/ws/oauth/confirm_access?oauth_token=%s";
+public class ConstantContactApi extends DefaultApi10a {
+ private static final String AUTHORIZE_URL = "https://oauth.constantcontact.com/ws/oauth/confirm_access?oauth_token=";
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://oauth.constantcontact.com/ws/oauth/access_token";
- }
+ public String getAccessTokenEndpoint() {
+ return "https://oauth.constantcontact.com/ws/oauth/access_token";
+ }
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
+ public String getAuthorizationUrl(final Token requestToken) {
+ return AUTHORIZE_URL + requestToken.getToken();
+ }
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://oauth.constantcontact.com/ws/oauth/request_token";
- }
+ public String getRequestTokenEndpoint() {
+ return "https://oauth.constantcontact.com/ws/oauth/request_token";
+ }
}
diff --git a/src/main/java/org/scribe/builder/api/ConstantContactApi2.java b/src/main/java/org/scribe/builder/api/ConstantContactApi2.java
index b5e4cac27..e87101af2 100644
--- a/src/main/java/org/scribe/builder/api/ConstantContactApi2.java
+++ b/src/main/java/org/scribe/builder/api/ConstantContactApi2.java
@@ -1,55 +1,52 @@
package org.scribe.builder.api;
-import java.util.regex.*;
-import org.scribe.exceptions.*;
-import org.scribe.extractors.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
-
-public class ConstantContactApi2 extends DefaultApi20
-{
- private static final String AUTHORIZE_URL = "https://oauth2.constantcontact.com/oauth2/oauth/siteowner/authorize?client_id=%s&response_type=code&redirect_uri=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://oauth2.constantcontact.com/oauth2/oauth/token?grant_type=authorization_code";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
-
- @Override
- public Verb getAccessTokenVerb()
- {
- return Verb.POST;
- }
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new AccessTokenExtractor()
- {
-
- public Token extract(String response)
- {
- Preconditions.checkEmptyString(response, "Response body is incorrect. Can't extract a token from an empty string");
-
- String regex = "\"access_token\"\\s*:\\s*\"([^&\"]+)\"";
- Matcher matcher = Pattern.compile(regex).matcher(response);
- if (matcher.find())
- {
- String token = OAuthEncoder.decode(matcher.group(1));
- return new Token(token, "", response);
- }
- else
- {
- throw new OAuthException("Response body is incorrect. Can't extract a token from this: '" + response + "'", null);
- }
- }
- };
- }
+import org.apache.commons.lang.StringUtils;
+import org.apache.regexp.RE;
+import org.scribe.exceptions.OAuthException;
+import org.scribe.extractors.AccessTokenExtractor;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
+
+public class ConstantContactApi2 extends DefaultApi20 {
+ private static final String AUTHORIZE_URL = "https://oauth2.constantcontact.com/oauth2/oauth/siteowner/authorize?client_id=%clienId%&response_type=code&redirect_uri=%redirectUri%";
+
+ public String getAccessTokenEndpoint() {
+ return "https://oauth2.constantcontact.com/oauth2/oauth/token?grant_type=authorization_code";
+ }
+
+ public String getAuthorizationUrl(final OAuthConfig config) {
+ String string = StringUtils.replace(AUTHORIZE_URL, "%clientId%", config.getApiKey());
+ string = StringUtils.replace(string, "%redirectUri%",
+ OAuthEncoder.encode(config.getCallback()));
+ return string;
+ }
+
+ public Verb getAccessTokenVerb() {
+ return Verb.POST;
+ }
+
+ public AccessTokenExtractor getAccessTokenExtractor() {
+ return new AccessTokenExtractor() {
+
+ public Token extract(final String response) {
+ Preconditions
+ .checkEmptyString(response,
+ "ResponseHttpImpl body is incorrect. Can't extract a token from an empty string");
+
+ final String regex = "\"access_token\"\\s*:\\s*\"([^&\"]+)\"";
+ final RE re = new RE(regex);
+ if (re.match(response)) {
+ final String token = OAuthEncoder.decode(re.getParen(1));
+ return new Token(token, "", response);
+ } else {
+ throw new OAuthException(
+ "ResponseHttpImpl body is incorrect. Can't extract a token from this: '"
+ + response + "'", null);
+ }
+ }
+ };
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/builder/api/DiggApi.java b/src/main/java/org/scribe/builder/api/DiggApi.java
deleted file mode 100644
index b69253eb9..000000000
--- a/src/main/java/org/scribe/builder/api/DiggApi.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-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/builder/api/EvernoteApi.java b/src/main/java/org/scribe/builder/api/EvernoteApi.java
deleted file mode 100644
index 007f48b1e..000000000
--- a/src/main/java/org/scribe/builder/api/EvernoteApi.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class EvernoteApi extends DefaultApi10a
-{
- private static final String AUTHORIZATION_URL = "https://www.evernote.com/OAuth.action?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://www.evernote.com/oauth";
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://www.evernote.com/oauth";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-
- public static class Sandbox extends EvernoteApi
- {
- private static final String SANDBOX_URL = "https://sandbox.evernote.com";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return SANDBOX_URL + "/oauth";
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return SANDBOX_URL + "/oauth";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(SANDBOX_URL + "/OAuth.action?oauth_token=%s", requestToken.getToken());
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/FacebookApi.java b/src/main/java/org/scribe/builder/api/FacebookApi.java
deleted file mode 100644
index 996a651e1..000000000
--- a/src/main/java/org/scribe/builder/api/FacebookApi.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-import org.scribe.utils.*;
-
-public class FacebookApi extends DefaultApi20
-{
- private static final String AUTHORIZE_URL = "https://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://graph.facebook.com/oauth/access_token";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- Preconditions.checkValidUrl(config.getCallback(), "Must provide a valid url as callback. Facebook does not support OOB");
-
- // Append scope if present
- if(config.hasScope())
- {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope()));
- }
- else
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/Foursquare2Api.java b/src/main/java/org/scribe/builder/api/Foursquare2Api.java
deleted file mode 100644
index d11def9d7..000000000
--- a/src/main/java/org/scribe/builder/api/Foursquare2Api.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.extractors.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
-
-public class Foursquare2Api extends DefaultApi20
-{
- private static final String AUTHORIZATION_URL = "https://foursquare.com/oauth2/authenticate?client_id=%s&response_type=code&redirect_uri=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://foursquare.com/oauth2/access_token?grant_type=authorization_code";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- Preconditions.checkValidUrl(config.getCallback(), "Must provide a valid url as callback. Foursquare2 does not support OOB");
- return String.format(AUTHORIZATION_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new JsonTokenExtractor();
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/FoursquareApi.java b/src/main/java/org/scribe/builder/api/FoursquareApi.java
deleted file mode 100644
index 060a76b76..000000000
--- a/src/main/java/org/scribe/builder/api/FoursquareApi.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class FoursquareApi extends DefaultApi10a
-{
- private static final String AUTHORIZATION_URL = "http://foursquare.com/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "http://foursquare.com/oauth/access_token";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "http://foursquare.com/oauth/request_token";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/FreelancerApi.java b/src/main/java/org/scribe/builder/api/FreelancerApi.java
deleted file mode 100644
index 482e66fd1..000000000
--- a/src/main/java/org/scribe/builder/api/FreelancerApi.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class FreelancerApi extends DefaultApi10a
-{
- private static final String AUTHORIZATION_URL = "http://www.freelancer.com/users/api-token/auth.php?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "http://api.freelancer.com/RequestAccessToken/requestAccessToken.xml?";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "http://api.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());
- }
-
- public static class Sandbox extends FreelancerApi
- {
- private static final String SANDBOX_AUTHORIZATION_URL = "http://www.sandbox.freelancer.com/users/api-token/auth.php";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "http://api.sandbox.freelancer.com/RequestRequestToken/requestRequestToken.xml";
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "http://api.sandbox.freelancer.com/RequestAccessToken/requestAccessToken.xml?";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(SANDBOX_AUTHORIZATION_URL + "?oauth_token=%s", requestToken.getToken());
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/GetGlueApi.java b/src/main/java/org/scribe/builder/api/GetGlueApi.java
deleted file mode 100644
index 3a7560f0f..000000000
--- a/src/main/java/org/scribe/builder/api/GetGlueApi.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class GetGlueApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "http://getglue.com/oauth/authorize?oauth_token=%s";
- private static final String REQUEST_TOKEN_RESOURCE = "https://api.getglue.com/oauth/request_token";
- private static final String ACCESS_TOKEN_RESOURCE = "https://api.getglue.com/oauth/access_token";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_RESOURCE;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
-}
diff --git a/src/main/java/org/scribe/builder/api/GoogleApi.java b/src/main/java/org/scribe/builder/api/GoogleApi.java
deleted file mode 100644
index 9c86e5e1a..000000000
--- a/src/main/java/org/scribe/builder/api/GoogleApi.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class GoogleApi extends DefaultApi10a
-{
- private static final String AUTHORIZATION_URL = "https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://www.google.com/accounts/OAuthGetAccessToken";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://www.google.com/accounts/OAuthGetRequestToken";
- }
-
- @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/main/java/org/scribe/builder/api/ImgUrApi.java b/src/main/java/org/scribe/builder/api/ImgUrApi.java
deleted file mode 100644
index 06dd6910d..000000000
--- a/src/main/java/org/scribe/builder/api/ImgUrApi.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-/**
- * OAuth API for ImgUr
- *
- * @author David Wursteisen
- * @see ImgUr API
- */
-public class ImgUrApi extends DefaultApi10a
-{
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://api.imgur.com/oauth/request_token";
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.imgur.com/oauth/access_token";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format("https://api.imgur.com/oauth/authorize?oauth_token=%s", requestToken.getToken());
- }
-}
-
diff --git a/src/main/java/org/scribe/builder/api/KaixinApi.java b/src/main/java/org/scribe/builder/api/KaixinApi.java
deleted file mode 100644
index 5b0e0d5dc..000000000
--- a/src/main/java/org/scribe/builder/api/KaixinApi.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class KaixinApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "http://api.kaixin001.com/oauth/request_token";
- private static final String ACCESS_TOKEN_URL = "http://api.kaixin001.com/oauth/access_token";
- private static final String AUTHORIZE_URL = "http://api.kaixin001.com/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
- @Override
- public Verb getRequestTokenVerb()
- {
- return Verb.GET;
- }
-
- @Override
- public Verb getAccessTokenVerb()
- {
- return Verb.GET;
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/KaixinApi20.java b/src/main/java/org/scribe/builder/api/KaixinApi20.java
deleted file mode 100644
index 9e27bcb33..000000000
--- a/src/main/java/org/scribe/builder/api/KaixinApi20.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.extractors.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
-
-/**
- * Kaixin(http://www.kaixin001.com/) open platform api based on OAuth 2.0.
- */
-public class KaixinApi20 extends DefaultApi20
-{
-
- private static final String AUTHORIZE_URL = "http://api.kaixin001.com/oauth2/authorize?client_id=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new JsonTokenExtractor();
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.kaixin001.com/oauth2/access_token?grant_type=authorization_code";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- // Append scope if present
- if (config.hasScope())
- {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope()));
- }
- else
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/LinkedInApi.java b/src/main/java/org/scribe/builder/api/LinkedInApi.java
deleted file mode 100644
index ee6becd85..000000000
--- a/src/main/java/org/scribe/builder/api/LinkedInApi.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-import java.util.*;
-
-public class LinkedInApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://api.linkedin.com/uas/oauth/authenticate?oauth_token=%s";
- private static final String REQUEST_TOKEN_URL = "https://api.linkedin.com/uas/oauth/requestToken";
-
- private final Set scopes;
-
- public LinkedInApi()
- {
- scopes = Collections.emptySet();
- }
-
- public LinkedInApi(Set scopes)
- {
- this.scopes = Collections.unmodifiableSet(scopes);
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.linkedin.com/uas/oauth/accessToken";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return scopes.isEmpty() ? REQUEST_TOKEN_URL : REQUEST_TOKEN_URL + "?scope=" + scopesAsString();
- }
-
- private String scopesAsString()
- {
- StringBuilder builder = new StringBuilder();
- for(String scope : scopes)
- {
- builder.append("+" + scope);
- }
- return builder.substring(1);
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
- public static LinkedInApi withScopes(String... scopes)
- {
- Set scopeSet = new HashSet(Arrays.asList(scopes));
- return new LinkedInApi(scopeSet);
- }
-
-}
diff --git a/src/main/java/org/scribe/builder/api/LiveApi.java b/src/main/java/org/scribe/builder/api/LiveApi.java
deleted file mode 100644
index 18140f603..000000000
--- a/src/main/java/org/scribe/builder/api/LiveApi.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.extractors.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
-
-public class LiveApi extends DefaultApi20
-{
-
- private static final String AUTHORIZE_URL = "https://oauth.live.com/authorize?client_id=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://oauth.live.com/token?grant_type=authorization_code";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- Preconditions.checkValidUrl(config.getCallback(), "Must provide a valid url as callback. Live does not support OOB");
-
- // Append scope if present
- if (config.hasScope())
- {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope()));
- }
- else
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
- }
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new JsonTokenExtractor();
- }
-}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/builder/api/LoveFilmApi.java b/src/main/java/org/scribe/builder/api/LoveFilmApi.java
deleted file mode 100644
index 81a5bb874..000000000
--- a/src/main/java/org/scribe/builder/api/LoveFilmApi.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class LoveFilmApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "http://openapi.lovefilm.com/oauth/request_token";
- private static final String ACCESS_TOKEN_URL = "http://openapi.lovefilm.com/oauth/access_token";
- private static final String AUTHORIZE_URL = "https://www.lovefilm.com/activate?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/MeetupApi.java b/src/main/java/org/scribe/builder/api/MeetupApi.java
deleted file mode 100644
index 8f63e39e1..000000000
--- a/src/main/java/org/scribe/builder/api/MeetupApi.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-/**
- * OAuth access to the Meetup.com API.
- * For more information visit http://www.meetup.com/api
- */
-public class MeetupApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "http://www.meetup.com/authenticate?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "http://api.meetup.com/oauth/request/";
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "http://api.meetup.com/oauth/access/";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/MendeleyApi.java b/src/main/java/org/scribe/builder/api/MendeleyApi.java
deleted file mode 100644
index c6e0eced7..000000000
--- a/src/main/java/org/scribe/builder/api/MendeleyApi.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-/**
- * @author Arieh "Vainolo" Bibliowicz
- * @see http://apidocs.mendeley.com/home/authentication
- */
-public class MendeleyApi extends DefaultApi10a
-{
-
- private static final String AUTHORIZATION_URL = "http://api.mendeley.com/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "http://api.mendeley.com/oauth/request_token/";
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "http://api.mendeley.com/oauth/access_token/";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-
- @Override
- public Verb getAccessTokenVerb()
- {
- return Verb.GET;
- }
-
- @Override
- public Verb getRequestTokenVerb()
- {
- return Verb.GET;
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/MisoApi.java b/src/main/java/org/scribe/builder/api/MisoApi.java
deleted file mode 100644
index a6d88d3df..000000000
--- a/src/main/java/org/scribe/builder/api/MisoApi.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class MisoApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "http://gomiso.com/oauth/authorize?oauth_token=%s";
- private static final String REQUEST_TOKEN_RESOURCE = "http://gomiso.com/oauth/request_token";
- private static final String ACCESS_TOKEN_RESOURCE = "http://gomiso.com/oauth/access_token";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_RESOURCE;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
-}
diff --git a/src/main/java/org/scribe/builder/api/NetProspexApi.java b/src/main/java/org/scribe/builder/api/NetProspexApi.java
deleted file mode 100644
index 8257de751..000000000
--- a/src/main/java/org/scribe/builder/api/NetProspexApi.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class NetProspexApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "https://api.netprospex.com/1.0/oauth/request-token";
- private static final String ACCESS_TOKEN_URL = "https://api.netprospex.com/1.0/oauth/access-token";
- private static final String AUTHORIZE_URL = "https://api.netprospex.com/1.0/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/NeteaseWeibooApi.java b/src/main/java/org/scribe/builder/api/NeteaseWeibooApi.java
deleted file mode 100644
index fae38ac30..000000000
--- a/src/main/java/org/scribe/builder/api/NeteaseWeibooApi.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class NeteaseWeibooApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "http://api.t.163.com/oauth/request_token";
- private static final String ACCESS_TOKEN_URL = "http://api.t.163.com/oauth/access_token";
- private static final String AUTHORIZE_URL = "http://api.t.163.com/oauth/authorize?oauth_token=%s";
- private static final String AUTHENTICATE_URL = "http://api.t.163.com/oauth/authenticate?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- /**
- * this method will ignore your callback
- * if you're creating a desktop client please choose this url
- * else your can call getAuthenticateUrl
- *
- * via http://open.t.163.com/wiki/index.php?title=%E8%AF%B7%E6%B1%82%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83Token(oauth/authorize)
- */
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
- /**
- * this method is for web client with callback url
- * if you're creating a desktop client please call getAuthorizationUrl
- *
- * via http://open.t.163.com/wiki/index.php?title=%E8%AF%B7%E6%B1%82%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83Token(oauth/authenticate)
- */
- public String getAuthenticateUrl(Token requestToken)
- {
- return String.format(AUTHENTICATE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/PlurkApi.java b/src/main/java/org/scribe/builder/api/PlurkApi.java
deleted file mode 100644
index 22b1ddb75..000000000
--- a/src/main/java/org/scribe/builder/api/PlurkApi.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class PlurkApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "http://www.plurk.com/OAuth/request_token";
- private static final String AUTHORIZATION_URL = "http://www.plurk.com/OAuth/authorize?oauth_token=%s";
- private static final String ACCESS_TOKEN_URL = "http://www.plurk.com/OAuth/access_token";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- public static class Mobile extends PlurkApi
- {
- private static final String AUTHORIZATION_URL = "http://www.plurk.com/m/authorize?oauth_token=%s";
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/Px500Api.java b/src/main/java/org/scribe/builder/api/Px500Api.java
deleted file mode 100644
index f7f3b0e0a..000000000
--- a/src/main/java/org/scribe/builder/api/Px500Api.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class Px500Api extends DefaultApi10a
-{
- private static final String AUTHORIZATION_URL = "https://api.500px.com/v1/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.500px.com/v1/oauth/access_token";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://api.500px.com/v1/oauth/request_token";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/builder/api/QWeiboApi.java b/src/main/java/org/scribe/builder/api/QWeiboApi.java
deleted file mode 100644
index e16f28836..000000000
--- a/src/main/java/org/scribe/builder/api/QWeiboApi.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class QWeiboApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "https://open.t.qq.com/cgi-bin/request_token";
- private static final String ACCESS_TOKEN_URL = "https://open.t.qq.com/cgi-bin/access_token";
- private static final String AUTHORIZE_URL = "https://open.t.qq.com/cgi-bin/authorize?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/RenrenApi.java b/src/main/java/org/scribe/builder/api/RenrenApi.java
deleted file mode 100644
index b31337ba4..000000000
--- a/src/main/java/org/scribe/builder/api/RenrenApi.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.extractors.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
-
-/**
- * Renren(http://www.renren.com/) OAuth 2.0 based api.
- */
-public class RenrenApi extends DefaultApi20
-{
- private static final String AUTHORIZE_URL = "https://graph.renren.com/oauth/authorize?client_id=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new JsonTokenExtractor();
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://graph.renren.com/oauth/token?grant_type=authorization_code";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- // Append scope if present
- if (config.hasScope())
- {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope()));
- }
- else
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/SapoApi.java b/src/main/java/org/scribe/builder/api/SapoApi.java
deleted file mode 100644
index 9771daf4c..000000000
--- a/src/main/java/org/scribe/builder/api/SapoApi.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class SapoApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://id.sapo.pt/oauth/authorize?oauth_token=%s";
- private static final String ACCESS_URL = "https://id.sapo.pt/oauth/access_token";
- private static final String REQUEST_URL = "https://id.sapo.pt/oauth/request_token";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_URL;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
- @Override
- public Verb getRequestTokenVerb()
- {
- return Verb.GET;
- }
-
- @Override
- public Verb getAccessTokenVerb()
- {
- return Verb.GET;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/builder/api/SinaWeiboApi.java b/src/main/java/org/scribe/builder/api/SinaWeiboApi.java
deleted file mode 100644
index 14951d31b..000000000
--- a/src/main/java/org/scribe/builder/api/SinaWeiboApi.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class SinaWeiboApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "http://api.t.sina.com.cn/oauth/request_token";
- private static final String ACCESS_TOKEN_URL = "http://api.t.sina.com.cn/oauth/access_token";
- private static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/SinaWeiboApi20.java b/src/main/java/org/scribe/builder/api/SinaWeiboApi20.java
deleted file mode 100644
index e0744c432..000000000
--- a/src/main/java/org/scribe/builder/api/SinaWeiboApi20.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.extractors.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
-
-/**
- * SinaWeibo OAuth 2.0 api.
- */
-public class SinaWeiboApi20 extends DefaultApi20
-{
- private static final String AUTHORIZE_URL = "https://api.weibo.com/oauth2/authorize?client_id=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
- @Override
- public Verb getAccessTokenVerb()
- {
- return Verb.POST;
- }
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new JsonTokenExtractor();
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.weibo.com/oauth2/access_token?grant_type=authorization_code";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- // Append scope if present
- if (config.hasScope())
- {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope()));
- }
- else
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/SkyrockApi.java b/src/main/java/org/scribe/builder/api/SkyrockApi.java
deleted file mode 100644
index b0e76a303..000000000
--- a/src/main/java/org/scribe/builder/api/SkyrockApi.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-/**
- * OAuth API for Skyrock.
- *
- * @author Nicolas Quiénot
- * @see Skyrock.com API
- */
-public class SkyrockApi extends DefaultApi10a
-{
- private static final String API_ENDPOINT = "https://api.skyrock.com/v2";
- private static final String REQUEST_TOKEN_RESOURCE = "/oauth/initiate";
- private static final String AUTHORIZE_URL = "/oauth/authorize?oauth_token=%s";
- private static final String ACCESS_TOKEN_RESOURCE = "/oauth/token";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return API_ENDPOINT + ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return API_ENDPOINT + REQUEST_TOKEN_RESOURCE;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(API_ENDPOINT + AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/SohuWeiboApi.java b/src/main/java/org/scribe/builder/api/SohuWeiboApi.java
deleted file mode 100644
index 1f927b7a5..000000000
--- a/src/main/java/org/scribe/builder/api/SohuWeiboApi.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class SohuWeiboApi extends DefaultApi10a
-{
- private static final String REQUEST_TOKEN_URL = "http://api.t.sohu.com/oauth/request_token";
- private static final String ACCESS_TOKEN_URL = "http://api.t.sohu.com/oauth/access_token";
- private static final String AUTHORIZE_URL = "http://api.t.sohu.com/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/TrelloApi.java b/src/main/java/org/scribe/builder/api/TrelloApi.java
deleted file mode 100644
index 9e46730d4..000000000
--- a/src/main/java/org/scribe/builder/api/TrelloApi.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class TrelloApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://trello.com/1/OAuthAuthorizeToken?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://trello.com/1/OAuthGetAccessToken";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://trello.com/1/OAuthGetRequestToken";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
-}
diff --git a/src/main/java/org/scribe/builder/api/TumblrApi.java b/src/main/java/org/scribe/builder/api/TumblrApi.java
deleted file mode 100644
index ee680ee8a..000000000
--- a/src/main/java/org/scribe/builder/api/TumblrApi.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class TumblrApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://www.tumblr.com/oauth/authorize?oauth_token=%s";
- private static final String REQUEST_TOKEN_RESOURCE = "http://www.tumblr.com/oauth/request_token";
- private static final String ACCESS_TOKEN_RESOURCE = "http://www.tumblr.com/oauth/access_token";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_RESOURCE;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/TwitterApi.java b/src/main/java/org/scribe/builder/api/TwitterApi.java
deleted file mode 100644
index a83c28e71..000000000
--- a/src/main/java/org/scribe/builder/api/TwitterApi.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class TwitterApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://api.twitter.com/oauth/authorize?oauth_token=%s";
- private static final String REQUEST_TOKEN_RESOURCE = "api.twitter.com/oauth/request_token";
- private static final String ACCESS_TOKEN_RESOURCE = "api.twitter.com/oauth/access_token";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "http://" + ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "http://" + REQUEST_TOKEN_RESOURCE;
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
- public static class SSL extends TwitterApi
- {
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://" + ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://" + REQUEST_TOKEN_RESOURCE;
- }
- }
-
- /**
- * Twitter 'friendlier' authorization endpoint for OAuth.
- *
- * Uses SSL.
- */
- public static class Authenticate extends SSL
- {
- private static final String AUTHENTICATE_URL = "https://api.twitter.com/oauth/authenticate?oauth_token=%s";
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHENTICATE_URL, requestToken.getToken());
- }
- }
-
- /**
- * Just an alias to the default (SSL) authorization endpoint.
- *
- * Need to include this for symmetry with 'Authenticate' only.
- */
- public static class Authorize extends SSL{}
-}
diff --git a/src/main/java/org/scribe/builder/api/UbuntuOneApi.java b/src/main/java/org/scribe/builder/api/UbuntuOneApi.java
deleted file mode 100644
index 2a72c3afe..000000000
--- a/src/main/java/org/scribe/builder/api/UbuntuOneApi.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-import org.scribe.services.*;
-
-/**
- * @author Julio Gutierrez
- *
- * Sep 6, 2012
- */
-public class UbuntuOneApi extends DefaultApi10a
-{
-
- private static final String AUTHORIZATION_URL = "https://one.ubuntu.com/oauth/authorize/?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://one.ubuntu.com/oauth/access/";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://one.ubuntu.com/oauth/request/";
- }
-
- @Override
- public SignatureService getSignatureService()
- {
- return new PlaintextSignatureService();
- }
-
-}
diff --git a/src/main/java/org/scribe/builder/api/ViadeoApi.java b/src/main/java/org/scribe/builder/api/ViadeoApi.java
deleted file mode 100644
index 0f5e77e76..000000000
--- a/src/main/java/org/scribe/builder/api/ViadeoApi.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.extractors.AccessTokenExtractor;
-import org.scribe.model.OAuthConfig;
-import org.scribe.utils.OAuthEncoder;
-import org.scribe.utils.Preconditions;
-
-import org.scribe.extractors.JsonTokenExtractor;
-
-public class ViadeoApi extends DefaultApi20
-{
- private static final String AUTHORIZE_URL = "https://secure.viadeo.com/oauth-provider/authorize2?client_id=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new JsonTokenExtractor();
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://secure.viadeo.com/oauth-provider/access_token2?grant_type=authorization_code";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- Preconditions.checkValidUrl(config.getCallback(), "Must provide a valid url as callback. Viadeo does not support OOB");
-
- // Append scope if present
- if(config.hasScope())
- {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope()));
- }
- else
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/VimeoApi.java b/src/main/java/org/scribe/builder/api/VimeoApi.java
deleted file mode 100644
index 231895dab..000000000
--- a/src/main/java/org/scribe/builder/api/VimeoApi.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class VimeoApi extends DefaultApi10a
-{
- private static final String AUTHORIZATION_URL = "http://vimeo.com/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "http://vimeo.com/oauth/access_token";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "http://vimeo.com/oauth/request_token";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/VkontakteApi.java b/src/main/java/org/scribe/builder/api/VkontakteApi.java
deleted file mode 100644
index e12f39559..000000000
--- a/src/main/java/org/scribe/builder/api/VkontakteApi.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.extractors.*;
-import org.scribe.utils.*;
-import org.scribe.model.*;
-
-/**
- * @author Boris G. Tsirkin
- * @since 20.4.2011
- */
-public class VkontakteApi extends DefaultApi20
-{
- private static final String AUTHORIZE_URL = "https://oauth.vk.com/authorize?client_id=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = String.format("%s&scope=%%s", AUTHORIZE_URL);
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.vkontakte.ru/oauth/access_token";
- }
-
- @Override
- public String getAuthorizationUrl(OAuthConfig config)
- {
- Preconditions.checkValidUrl(config.getCallback(), "Valid url is required for a callback. Vkontakte does not support OOB");
- if(config.hasScope())// Appending scope if present
- {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope()));
- }
- else
- {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
- }
- }
-
- @Override
- public AccessTokenExtractor getAccessTokenExtractor()
- {
- return new JsonTokenExtractor();
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/XingApi.java b/src/main/java/org/scribe/builder/api/XingApi.java
deleted file mode 100755
index ec8823e67..000000000
--- a/src/main/java/org/scribe/builder/api/XingApi.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-
-public class XingApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://api.xing.com/v1/authorize?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.xing.com/v1/access_token";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://api.xing.com/v1/request_token";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
-}
diff --git a/src/main/java/org/scribe/builder/api/YahooApi.java b/src/main/java/org/scribe/builder/api/YahooApi.java
deleted file mode 100644
index e8a29a738..000000000
--- a/src/main/java/org/scribe/builder/api/YahooApi.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.Token;
-
-public class YahooApi extends DefaultApi10a
-{
- private static final String AUTHORIZE_URL = "https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=%s";
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://api.login.yahoo.com/oauth/v2/get_token";
- }
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://api.login.yahoo.com/oauth/v2/get_request_token";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/src/main/java/org/scribe/builder/api/YammerApi.java b/src/main/java/org/scribe/builder/api/YammerApi.java
deleted file mode 100644
index e06543d97..000000000
--- a/src/main/java/org/scribe/builder/api/YammerApi.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.scribe.builder.api;
-
-import org.scribe.model.*;
-import org.scribe.services.*;
-
-public class YammerApi extends DefaultApi10a
-{
- private static final String AUTHORIZATION_URL = "https://www.yammer.com/oauth/authorize?oauth_token=%s";
-
- @Override
- public String getRequestTokenEndpoint()
- {
- return "https://www.yammer.com/oauth/request_token";
- }
-
- @Override
- public String getAccessTokenEndpoint()
- {
- return "https://www.yammer.com/oauth/access_token";
- }
-
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-
- @Override
- public SignatureService getSignatureService()
- {
- return new PlaintextSignatureService();
- }
-}
diff --git a/src/main/java/org/scribe/exceptions/OAuthConnectionException.java b/src/main/java/org/scribe/exceptions/OAuthConnectionException.java
index 918de810c..3708715e0 100644
--- a/src/main/java/org/scribe/exceptions/OAuthConnectionException.java
+++ b/src/main/java/org/scribe/exceptions/OAuthConnectionException.java
@@ -3,12 +3,16 @@
/**
* @author: Pablo Fernandez
*/
-public class OAuthConnectionException extends OAuthException
-{
- private static final String MSG = "There was a problem while creating a connection to the remote service.";
-
- public OAuthConnectionException(Exception e)
- {
- super(MSG, e);
- }
+public class OAuthConnectionException extends OAuthException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private static final String MSG = "There was a problem while creating a connection to the remote service.";
+
+ public OAuthConnectionException(final Exception e) {
+ super(MSG, e);
+ }
}
diff --git a/src/main/java/org/scribe/exceptions/OAuthParametersMissingException.java b/src/main/java/org/scribe/exceptions/OAuthParametersMissingException.java
index 8407ce493..2a1eb1684 100644
--- a/src/main/java/org/scribe/exceptions/OAuthParametersMissingException.java
+++ b/src/main/java/org/scribe/exceptions/OAuthParametersMissingException.java
@@ -1,26 +1,23 @@
package org.scribe.exceptions;
-import org.scribe.model.*;
+import org.scribe.model.OAuthRequest;
/**
* Specialized exception that represents a missing OAuth parameter.
*
* @author Pablo Fernandez
*/
-public class OAuthParametersMissingException extends OAuthException
-{
+public class OAuthParametersMissingException extends OAuthException {
- private static final long serialVersionUID = 1745308760111976671L;
- private static final String MSG = "Could not find oauth parameters in request: %s. "
- + "OAuth parameters must be specified with the addOAuthParameter() method";
+ private static final long serialVersionUID = 1745308760111976671L;
- /**
- * Default constructor.
- *
- * @param request OAuthRequest that caused the error
- */
- public OAuthParametersMissingException(OAuthRequest request)
- {
- super(String.format(MSG, request));
- }
+ /**
+ * Default constructor.
+ *
+ * @param request OAuthRequest that caused the error
+ */
+ public OAuthParametersMissingException(final OAuthRequest request) {
+ super("Could not find oauth parameters in request: " + String.valueOf(request) + ". "
+ + "OAuth parameters must be specified with the addOAuthParameter() method");
+ }
}
diff --git a/src/main/java/org/scribe/exceptions/OAuthSignatureException.java b/src/main/java/org/scribe/exceptions/OAuthSignatureException.java
index 94692be5d..aceb37f9c 100644
--- a/src/main/java/org/scribe/exceptions/OAuthSignatureException.java
+++ b/src/main/java/org/scribe/exceptions/OAuthSignatureException.java
@@ -5,20 +5,18 @@
*
* @author Pablo Fernandez
*/
-public class OAuthSignatureException extends OAuthException
-{
- private static final long serialVersionUID = 1L;
- private static final String MSG = "Error while signing string: %s";
-
- /**
- * Default constructor
- *
- * @param stringToSign plain string that gets signed (HMAC-SHA, etc)
- * @param e original exception
- */
- public OAuthSignatureException(String stringToSign, Exception e)
- {
- super(String.format(MSG, stringToSign), e);
- }
+public class OAuthSignatureException extends OAuthException {
+ private static final long serialVersionUID = 1L;
+ private static final String MSG = "Error while signing string: ";
+
+ /**
+ * Default constructor
+ *
+ * @param stringToSign plain string that gets signed (HMAC-SHA, etc)
+ * @param e original exception
+ */
+ public OAuthSignatureException(final String stringToSign, final Exception e) {
+ super(MSG + String.valueOf(stringToSign), e);
+ }
}
diff --git a/src/main/java/org/scribe/extractors/AccessTokenExtractor.java b/src/main/java/org/scribe/extractors/AccessTokenExtractor.java
index 3c0dd34d6..8da755ab8 100644
--- a/src/main/java/org/scribe/extractors/AccessTokenExtractor.java
+++ b/src/main/java/org/scribe/extractors/AccessTokenExtractor.java
@@ -10,7 +10,7 @@
public interface AccessTokenExtractor
{
/**
- * Extracts the access token from the contents of an Http Response
+ * Extracts the access token from the contents of an Http ResponseHttpImpl
*
* @param response the contents of the response
* @return OAuth access token
diff --git a/src/main/java/org/scribe/extractors/BaseStringExtractorImpl.java b/src/main/java/org/scribe/extractors/BaseStringExtractorImpl.java
index ca21a0d1f..c358cb13d 100644
--- a/src/main/java/org/scribe/extractors/BaseStringExtractorImpl.java
+++ b/src/main/java/org/scribe/extractors/BaseStringExtractorImpl.java
@@ -1,8 +1,10 @@
package org.scribe.extractors;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
+import org.scribe.exceptions.OAuthParametersMissingException;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.ParameterList;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
/**
* Default implementation of {@link BaseStringExtractor}. Conforms to OAuth 1.0a
@@ -10,39 +12,40 @@
* @author Pablo Fernandez
*
*/
-public class BaseStringExtractorImpl implements BaseStringExtractor
-{
+public class BaseStringExtractorImpl implements BaseStringExtractor {
- private static final String AMPERSAND_SEPARATED_STRING = "%s&%s&%s";
+ private static final String AMPERSAND_SEPARATOR = "&";
- /**
- * {@inheritDoc}
- */
- public String extract(OAuthRequest request)
- {
- checkPreconditions(request);
- String verb = OAuthEncoder.encode(request.getVerb().name());
- String url = OAuthEncoder.encode(request.getSanitizedUrl());
- String params = getSortedAndEncodedParams(request);
- return String.format(AMPERSAND_SEPARATED_STRING, verb, url, params);
- }
+ /**
+ * {@inheritDoc}
+ */
+ public String extract(final OAuthRequest request) {
+ checkPreconditions(request);
+ final String verb = OAuthEncoder.encode(request.getVerb().name());
+ final String url = OAuthEncoder.encode(request.getUrl());
+ final String params = getSortedAndEncodedParams(request);
+ final StringBuffer buffer = new StringBuffer();
+ buffer.append(verb);
+ buffer.append(AMPERSAND_SEPARATOR);
+ buffer.append(url);
+ buffer.append(AMPERSAND_SEPARATOR);
+ buffer.append(params);
+ return buffer.toString();
+ }
- private String getSortedAndEncodedParams(OAuthRequest request)
- {
- ParameterList params = new ParameterList();
- params.addAll(request.getQueryStringParams());
- params.addAll(request.getBodyParams());
- params.addAll(new ParameterList(request.getOauthParameters()));
- return params.sort().asOauthBaseString();
- }
+ private String getSortedAndEncodedParams(final OAuthRequest request) {
+ final ParameterList params = new ParameterList();
+ params.addAll(request.getQueryStringParams());
+ params.addAll(request.getBodyParams());
+ params.addAll(new ParameterList(request.getOauthParameters()));
+ return params.sort().asOauthBaseString();
+ }
- private void checkPreconditions(OAuthRequest request)
- {
- Preconditions.checkNotNull(request, "Cannot extract base string from null object");
+ private void checkPreconditions(final OAuthRequest request) {
+ Preconditions.checkNotNull(request, "Cannot extract base string from null object");
- if (request.getOauthParameters() == null || request.getOauthParameters().size() <= 0)
- {
- throw new OAuthParametersMissingException(request);
+ if (request.getOauthParameters() == null || request.getOauthParameters().size() <= 0) {
+ throw new OAuthParametersMissingException(request);
+ }
}
- }
}
diff --git a/src/main/java/org/scribe/extractors/HeaderExtractor.java b/src/main/java/org/scribe/extractors/HeaderExtractor.java
index 2bc1f8bd4..e41080eb4 100644
--- a/src/main/java/org/scribe/extractors/HeaderExtractor.java
+++ b/src/main/java/org/scribe/extractors/HeaderExtractor.java
@@ -13,7 +13,7 @@ public interface HeaderExtractor
* Generates an OAuth 'Authorization' Http header to include in requests as the signature.
*
* @param request the OAuthRequest to inspect and generate the header
- * @return the Http header value
+ * @return the Http header name
*/
String extract(OAuthRequest request);
}
diff --git a/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java b/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java
index 02094693f..a448f168d 100644
--- a/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java
+++ b/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java
@@ -1,10 +1,13 @@
package org.scribe.extractors;
-import java.util.*;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
+import org.scribe.exceptions.OAuthParametersMissingException;
+import org.scribe.model.OAuthRequest;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
/**
* Default implementation of {@link HeaderExtractor}. Conforms to OAuth 1.0a
@@ -12,40 +15,41 @@
* @author Pablo Fernandez
*
*/
-public class HeaderExtractorImpl implements HeaderExtractor
-{
- private static final String PARAM_SEPARATOR = ", ";
- private static final String PREAMBLE = "OAuth ";
- public static final int ESTIMATED_PARAM_LENGTH = 20;
+public class HeaderExtractorImpl implements HeaderExtractor {
+ private static final String PARAM_SEPARATOR = ", ";
+ private static final String PREAMBLE = "OAuth ";
+ public static final int ESTIMATED_PARAM_LENGTH = 20;
- /**
- * {@inheritDoc}
- */
- public String extract(OAuthRequest request)
- {
- checkPreconditions(request);
- Map parameters = request.getOauthParameters();
- StringBuilder header = new StringBuilder(parameters.size() * ESTIMATED_PARAM_LENGTH);
- header.append(PREAMBLE);
- for (Map.Entry entry : parameters.entrySet())
- {
- if(header.length() > PREAMBLE.length())
- {
- header.append(PARAM_SEPARATOR);
- }
- header.append(String.format("%s=\"%s\"", entry.getKey(), OAuthEncoder.encode(entry.getValue())));
+ /**
+ * {@inheritDoc}
+ */
+ public String extract(final OAuthRequest request) {
+ checkPreconditions(request);
+ final Map/**/parameters = request.getOauthParameters();
+ final StringBuilder header = new StringBuilder(parameters.size() * ESTIMATED_PARAM_LENGTH);
+ header.append(PREAMBLE);
+ final Iterator i = parameters.entrySet().iterator();
+ while (i.hasNext()) {
+ final Map.Entry/**/entry = (Entry) i.next();
+ if (header.length() > PREAMBLE.length()) {
+ header.append(PARAM_SEPARATOR);
+ }
+ final StringBuffer buffer = new StringBuffer();
+ buffer.append(entry.getKey());
+ buffer.append("=\"");
+ buffer.append(OAuthEncoder.encode((String) entry.getValue()));
+ buffer.append("\"");
+ header.append(buffer.toString());
+ }
+ return header.toString();
}
- return header.toString();
- }
- private void checkPreconditions(OAuthRequest request)
- {
- Preconditions.checkNotNull(request, "Cannot extract a header from a null object");
+ private void checkPreconditions(final OAuthRequest request) {
+ Preconditions.checkNotNull(request, "Cannot extract a header from a null object");
- if (request.getOauthParameters() == null || request.getOauthParameters().size() <= 0)
- {
- throw new OAuthParametersMissingException(request);
+ if (request.getOauthParameters() == null || request.getOauthParameters().size() <= 0) {
+ throw new OAuthParametersMissingException(request);
+ }
}
- }
}
diff --git a/src/main/java/org/scribe/extractors/JsonTokenExtractor.java b/src/main/java/org/scribe/extractors/JsonTokenExtractor.java
index 801cd6296..214480f0f 100644
--- a/src/main/java/org/scribe/extractors/JsonTokenExtractor.java
+++ b/src/main/java/org/scribe/extractors/JsonTokenExtractor.java
@@ -1,27 +1,24 @@
package org.scribe.extractors;
-import java.util.regex.*;
+import org.apache.regexp.RE;
+import org.apache.regexp.REUtil;
+import org.scribe.exceptions.OAuthException;
+import org.scribe.model.Token;
+import org.scribe.utils.Preconditions;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
+public class JsonTokenExtractor implements AccessTokenExtractor {
+ private static final String ACCESS_TOKEN_PATTERN = "\"access_token\":\\s*\"(\\S*?)\"";
-public class JsonTokenExtractor implements AccessTokenExtractor
-{
- private Pattern accessTokenPattern = Pattern.compile("\"access_token\":\\s*\"(\\S*?)\"");
+ public Token extract(final String response) {
- public Token extract(String response)
- {
- Preconditions.checkEmptyString(response, "Cannot extract a token from a null or empty String");
- Matcher matcher = accessTokenPattern.matcher(response);
- if(matcher.find())
- {
- return new Token(matcher.group(1), "", response);
+ Preconditions.checkEmptyString(response,
+ "Cannot extract a token from a null or empty String");
+ final RE accessTokenPattern = REUtil.createRE(ACCESS_TOKEN_PATTERN);
+ if (accessTokenPattern.match(response)) {
+ return new Token(accessTokenPattern.getParen(1), "", response);
+ } else {
+ throw new OAuthException("Cannot extract an acces token. ResponseHttpImpl was: "
+ + response);
+ }
}
- else
- {
- throw new OAuthException("Cannot extract an acces token. Response was: " + response);
- }
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/extractors/RequestTokenExtractor.java b/src/main/java/org/scribe/extractors/RequestTokenExtractor.java
index 1830212b6..3bc9f4d85 100644
--- a/src/main/java/org/scribe/extractors/RequestTokenExtractor.java
+++ b/src/main/java/org/scribe/extractors/RequestTokenExtractor.java
@@ -10,7 +10,7 @@
public interface RequestTokenExtractor
{
/**
- * Extracts the request token from the contents of an Http Response
+ * Extracts the request token from the contents of an Http ResponseHttpImpl
*
* @param response the contents of the response
* @return OAuth access token
diff --git a/src/main/java/org/scribe/extractors/TokenExtractor20Impl.java b/src/main/java/org/scribe/extractors/TokenExtractor20Impl.java
index 1eb22ad63..62f4bfa1c 100644
--- a/src/main/java/org/scribe/extractors/TokenExtractor20Impl.java
+++ b/src/main/java/org/scribe/extractors/TokenExtractor20Impl.java
@@ -1,36 +1,34 @@
package org.scribe.extractors;
-import java.util.regex.*;
+import org.scribe.exceptions.OAuthException;
+import org.scribe.model.Token;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
+public class TokenExtractor20Impl implements AccessTokenExtractor {
+ private static final String PARAM = "access_token";
+ private static final String EMPTY_SECRET = "";
-/**
- * Default implementation of {@AccessTokenExtractor}. Conforms to OAuth 2.0
- *
- */
-public class TokenExtractor20Impl implements AccessTokenExtractor
-{
- private static final String TOKEN_REGEX = "access_token=([^&]+)";
- private static final String EMPTY_SECRET = "";
+ /**
+ * {@inheritDoc}
+ */
+ public Token extract(final String response) {
+ Preconditions.checkEmptyString(response,
+ "ResponseHttpImpl body is incorrect. Can't extract a token from an empty string");
- /**
- * {@inheritDoc}
- */
- public Token extract(String response)
- {
- Preconditions.checkEmptyString(response, "Response body is incorrect. Can't extract a token from an empty string");
+ final int start = response.indexOf(PARAM + "=");
+ if (start >= 0) {
+ int end = response.indexOf("&", start);
+ if (end < 0) {
+ end = response.length() - 1;
+ }
+ final String token = OAuthEncoder.decode(response.substring(start + PARAM.length() + 1,
+ end));
+ return new Token(token, EMPTY_SECRET, response);
+ }
- Matcher matcher = Pattern.compile(TOKEN_REGEX).matcher(response);
- if (matcher.find())
- {
- String token = OAuthEncoder.decode(matcher.group(1));
- return new Token(token, EMPTY_SECRET, response);
- }
- else
- {
- throw new OAuthException("Response body is incorrect. Can't extract a token from this: '" + response + "'", null);
+ throw new OAuthException(
+ "ResponseHttpImpl body is incorrect. Can't extract a token from this: '" + response
+ + "'", null);
}
- }
}
diff --git a/src/main/java/org/scribe/extractors/TokenExtractorImpl.java b/src/main/java/org/scribe/extractors/TokenExtractorImpl.java
index ba1784b9b..6a7c5a1e5 100644
--- a/src/main/java/org/scribe/extractors/TokenExtractorImpl.java
+++ b/src/main/java/org/scribe/extractors/TokenExtractorImpl.java
@@ -1,44 +1,35 @@
package org.scribe.extractors;
-import java.util.regex.*;
+import org.scribe.exceptions.OAuthException;
+import org.scribe.model.Token;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.utils.*;
+public class TokenExtractorImpl implements RequestTokenExtractor, AccessTokenExtractor {
-/**
- * Default implementation of {@RequestTokenExtractor} and {@AccessTokenExtractor}. Conforms to OAuth 1.0a
- *
- * The process for extracting access and request tokens is similar so this class can do both things.
- *
- * @author Pablo Fernandez
- */
-public class TokenExtractorImpl implements RequestTokenExtractor, AccessTokenExtractor
-{
- private static final Pattern TOKEN_REGEX = Pattern.compile("oauth_token=([^&]+)");
- private static final Pattern SECRET_REGEX = Pattern.compile("oauth_token_secret=([^&]*)");
-
- /**
- * {@inheritDoc}
- */
- public Token extract(String response)
- {
- Preconditions.checkEmptyString(response, "Response body is incorrect. Can't extract a token from an empty string");
- String token = extract(response, TOKEN_REGEX);
- String secret = extract(response, SECRET_REGEX);
- return new Token(token, secret, response);
- }
-
- private String extract(String response, Pattern p)
- {
- Matcher matcher = p.matcher(response);
- if (matcher.find() && matcher.groupCount() >= 1)
- {
- return OAuthEncoder.decode(matcher.group(1));
+ /**
+ * {@inheritDoc}
+ */
+ public Token extract(final String response) {
+ Preconditions.checkEmptyString(response,
+ "ResponseHttpImpl body is incorrect. Can't extract a token from an empty string");
+ final String token = extract(response, "oauth_token");
+ final String secret = extract(response, "oauth_token_secret");
+ return new Token(token, secret, response);
}
- else
- {
- throw new OAuthException("Response body is incorrect. Can't extract token and secret from this: '" + response + "'", null);
+
+ public static String extract(final String response, final String param) {
+ final int start = response.indexOf(param + "=");
+ if (start >= 0) {
+ int end = response.indexOf("&", start);
+ if (end < 0) {
+ end = response.length() - 1;
+ }
+ return OAuthEncoder.decode(response.substring(start + param.length() + 1, end));
+ }
+ throw new OAuthException(
+ "ResponseHttpImpl body is incorrect. Can't extract a token from this: '" + response
+ + "'", null);
}
- }
+
}
diff --git a/src/main/java/org/scribe/model/OAuthConfig.java b/src/main/java/org/scribe/model/OAuthConfig.java
index 374c95894..48cc95474 100644
--- a/src/main/java/org/scribe/model/OAuthConfig.java
+++ b/src/main/java/org/scribe/model/OAuthConfig.java
@@ -1,79 +1,87 @@
package org.scribe.model;
-import java.io.*;
+import java.io.OutputStream;
/**
* Parameter object that groups OAuth config values
*
* @author Pablo Fernandez
*/
-public class OAuthConfig
-{
- private final String apiKey;
- private final String apiSecret;
- private final String callback;
- private final SignatureType signatureType;
- private final String scope;
- private final OutputStream debugStream;
-
- public OAuthConfig(String key, String secret)
- {
- this(key, secret, null, null, null, null);
- }
+public class OAuthConfig {
+ private final String apiKey;
+ private final String apiSecret;
+ private final String callback;
+ private final SignatureType signatureType;
+ private final String scope;
+ private final OutputStream debugStream;
+ private OAuthRequestCreatorFactory requestCreator;
- public OAuthConfig(String key, String secret, String callback, SignatureType type, String scope, OutputStream stream)
- {
- this.apiKey = key;
- this.apiSecret = secret;
- this.callback = callback;
- this.signatureType = type;
- this.scope = scope;
- this.debugStream = stream;
- }
+ public OAuthConfig(final String key, final String secret) {
+ this(key, secret, null, null, null, null);
+ }
- public String getApiKey()
- {
- return apiKey;
- }
+ public OAuthConfig(final String key, final String secret, final String callback,
+ final SignatureType type, final String scope, final OutputStream stream,
+ final OAuthRequestCreatorFactory requestCreator) {
+ this(key, secret, callback, type, scope, stream);
+ this.requestCreator = requestCreator;
+ }
- public String getApiSecret()
- {
- return apiSecret;
- }
+ public OAuthConfig(final String key, final String secret, final String callback,
+ final SignatureType type, final String scope, final OutputStream stream) {
+ apiKey = key;
+ apiSecret = secret;
+ this.callback = callback;
+ signatureType = type;
+ this.scope = scope;
+ debugStream = stream;
+ }
- public String getCallback()
- {
- return callback;
- }
+ public String getApiKey() {
+ return apiKey;
+ }
- public SignatureType getSignatureType()
- {
- return signatureType;
- }
+ public String getApiSecret() {
+ return apiSecret;
+ }
- public String getScope()
- {
- return scope;
- }
+ public String getCallback() {
+ return callback;
+ }
- public boolean hasScope()
- {
- return scope != null;
- }
+ public SignatureType getSignatureType() {
+ return signatureType;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ public boolean hasScope() {
+ return scope != null;
+ }
+
+ public void log(String message) {
+ if (debugStream != null) {
+ message = message + "\n";
+ try {
+ debugStream.write(message.getBytes("UTF8"));
+ } catch (final Exception e) {
+ throw new RuntimeException(
+ "there were problems while writting to the debug stream", e);
+ }
+ }
+ }
- public void log(String message)
- {
- if (debugStream != null)
- {
- message = message + "\n";
- try
- {
- debugStream.write(message.getBytes("UTF8"));
- }
- catch (Exception e)
- {
- throw new RuntimeException("there were problems while writting to the debug stream", e);
- }
+ /**
+ * @return
+ */
+ public OAuthRequestCreatorFactory getOAuthRequestCreatorFactory() {
+ synchronized (this) {
+ if (requestCreator == null) {
+ requestCreator = new DefaultOAuthRequestCreatorFactory();
+ }
+ }
+ return requestCreator;
}
- }
}
diff --git a/src/main/java/org/scribe/model/OAuthRequest.java b/src/main/java/org/scribe/model/OAuthRequest.java
index 43892278f..5f185d39a 100644
--- a/src/main/java/org/scribe/model/OAuthRequest.java
+++ b/src/main/java/org/scribe/model/OAuthRequest.java
@@ -1,69 +1,174 @@
package org.scribe.model;
-import java.util.*;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
/**
- * The representation of an OAuth HttpRequest.
+ * The representation of an OAuth Request is a Bridge to the request object. The user can provide the underlying request object
*
- * Adds OAuth-related functionality to the {@link Request}
- *
- * @author Pablo Fernandez
+ * @author Duane Musser
*/
-public class OAuthRequest extends Request
-{
- private static final String OAUTH_PREFIX = "oauth_";
- private Map oauthParameters;
-
- /**
- * Default constructor.
- *
- * @param verb Http verb/method
- * @param url resource URL
- */
- public OAuthRequest(Verb verb, String url)
- {
- super(verb, url);
- this.oauthParameters = new HashMap();
- }
-
- /**
- * Adds an OAuth parameter.
- *
- * @param key name of the parameter
- * @param value value of the parameter
- *
- * @throws IllegalArgumentException if the parameter is not an OAuth parameter
- */
- public void addOAuthParameter(String key, String value)
- {
- oauthParameters.put(checkKey(key), value);
- }
-
- private String checkKey(String key)
- {
- if (key.startsWith(OAUTH_PREFIX) || key.equals(OAuthConstants.SCOPE))
- {
- return key;
- }
- else
- {
- throw new IllegalArgumentException(String.format("OAuth parameters must either be '%s' or start with '%s'", OAuthConstants.SCOPE, OAUTH_PREFIX));
- }
- }
-
- /**
- * Returns the {@link Map} containing the key-value pair of parameters.
- *
- * @return parameters as map
- */
- public Map getOauthParameters()
- {
- return oauthParameters;
- }
-
- @Override
- public String toString()
- {
- return String.format("@OAuthRequest(%s, %s)", getVerb(), getUrl());
- }
+public class OAuthRequest implements Request {
+ /**
+ *
+ */
+ private static final String NOT_INTIALIZED = "Not intialized! Make sure RequestFactortImpl is provided.";
+ private static final String OAUTH_PREFIX = "oauth_";
+ private final Map/**/oauthParameters;
+
+ private final Request request;
+
+ public OAuthRequest(final Request request) {
+ super();
+ this.request = request;
+ oauthParameters = new HashMap/**/();
+ }
+
+ /**
+ * Adds an OAuth parameter.
+ *
+ * @param key name of the parameter
+ * @param name name of the parameter
+ *
+ * @throws IllegalArgumentException if the parameter is not an OAuth parameter
+ */
+ public void addOAuthParameter(final String key, final String value) {
+ oauthParameters.put(checkKey(key), value);
+ }
+
+ private String checkKey(final String key) {
+ if (key.startsWith(OAUTH_PREFIX) || key.equals(OAuthConstants.SCOPE)) {
+ return key;
+ } else {
+ throw new IllegalArgumentException("OAuth parameters must either be '"
+ + OAuthConstants.SCOPE + "' or start with '" + OAUTH_PREFIX + "'");
+ }
+ }
+
+ /**
+ * Returns the {@link Map} containing the key-name pair of parameters.
+ *
+ * @return parameters as map
+ */
+ public Map/**/getOauthParameters() {
+ return oauthParameters;
+ }
+
+ public String toString() {
+ return "@OAuthRequest(" + String.valueOf(getVerb()) + ", " + String.valueOf(getUrl()) + ")";
+ }
+
+ /**
+ * @see org.scribe.model.Request#addHeader(java.lang.String, java.lang.String)
+ */
+ public void addHeader(final String key, final String value) {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ request.addHeader(key, value);
+ }
+
+ /**
+ * @see org.scribe.model.Request#addBodyParameter(java.lang.String, java.lang.String)
+ */
+ public void addBodyParameter(final String key, final String value) {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ request.addBodyParameter(key, value);
+ }
+
+ /**
+ * @see org.scribe.model.Request#addQuerystringParameter(java.lang.String, java.lang.String)
+ */
+ public void addQuerystringParameter(final String key, final String value) {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ request.addQuerystringParameter(key, value);
+ }
+
+ /**
+ * @see org.scribe.model.Request#getQueryStringParams()
+ */
+ public ParameterList getQueryStringParams() {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ return request.getQueryStringParams();
+ }
+
+ /**
+ * @see org.scribe.model.Request#getBodyParams()
+ */
+ public ParameterList getBodyParams() {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ return request.getBodyParams();
+ }
+
+ /**
+ * @see org.scribe.model.Request#getUrl()
+ */
+ public String getUrl() {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ return request.getUrl();
+ }
+
+ /**
+ * @see org.scribe.model.Request#getVerb()
+ */
+ public Verb getVerb() {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ return request.getVerb();
+ }
+
+ /**
+ * @see org.scribe.model.Request#getHeaders()
+ */
+ public Map getHeaders() {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ return request.getHeaders();
+ }
+
+ /**
+ * @throws IOException
+ * @see org.scribe.model.Request#send()
+ */
+ public Response send() throws IOException {
+ if (request == null) {
+ throw new IllegalAccessError(NOT_INTIALIZED);
+ }
+ return request.send();
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#addPayload(java.lang.String)
+ */
+ public void addPayload(final String payload) throws IOException {
+ request.addPayload(payload);
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#addPayload(byte[])
+ */
+ public void addPayload(final byte[] payload) throws IOException {
+ request.addPayload(payload);
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getPayload()
+ */
+ public String getPayload() {
+ return request.getPayload();
+ }
+
}
diff --git a/src/main/java/org/scribe/model/Parameter.java b/src/main/java/org/scribe/model/Parameter.java
index f8f3b81f6..f91a28cb0 100644
--- a/src/main/java/org/scribe/model/Parameter.java
+++ b/src/main/java/org/scribe/model/Parameter.java
@@ -1,47 +1,53 @@
package org.scribe.model;
-import org.scribe.utils.*;
+import org.scribe.utils.OAuthEncoder;
/**
* @author: Pablo Fernandez
*/
-public class Parameter implements Comparable
+public class Parameter implements Comparable/**/
{
- private static final String UTF = "UTF8";
-
- private final String key;
- private final String value;
-
- public Parameter(String key, String value)
- {
- this.key = key;
- this.value = value;
- }
-
- public String asUrlEncodedPair()
- {
- return OAuthEncoder.encode(key).concat("=").concat(OAuthEncoder.encode(value));
- }
-
- public boolean equals(Object other)
- {
- if(other == null) return false;
- if(other == this) return true;
- if(!(other instanceof Parameter)) return false;
-
- Parameter otherParam = (Parameter) other;
- return otherParam.key.equals(key) && otherParam.value.equals(value);
- }
-
- public int hashCode()
- {
- return key.hashCode() + value.hashCode();
- }
-
- public int compareTo(Parameter parameter)
- {
- int keyDiff = key.compareTo(parameter.key);
-
- return keyDiff != 0 ? keyDiff : value.compareTo(parameter.value);
- }
+ private final String key;
+ private final String value;
+
+ public Parameter(final String key, final String value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public String asUrlEncodedPair() {
+ return OAuthEncoder.encode(key).concat("=").concat(OAuthEncoder.encode(value));
+ }
+
+ public boolean equals(final Object other) {
+ if (other == null) {
+ return false;
+ }
+ if (other == this) {
+ return true;
+ }
+ if (!(other instanceof Parameter)) {
+ return false;
+ }
+
+ final Parameter otherParam = (Parameter) other;
+ return otherParam.key.equals(key) && otherParam.value.equals(value);
+ }
+
+ public int hashCode() {
+ return key.hashCode() + value.hashCode();
+ }
+
+ public int compareTo(final Object o) {
+ if (o instanceof Parameter) {
+ return compareTo((Parameter) o);
+ }
+ return 1;
+ }
+
+ public int compareTo(final Parameter parameter) {
+ final int keyDiff = key.compareTo(parameter.key);
+
+ return keyDiff != 0 ? keyDiff : value.compareTo(parameter.value);
+ }
}
diff --git a/src/main/java/org/scribe/model/ParameterList.java b/src/main/java/org/scribe/model/ParameterList.java
index b365cbaf6..1d1f59f96 100644
--- a/src/main/java/org/scribe/model/ParameterList.java
+++ b/src/main/java/org/scribe/model/ParameterList.java
@@ -2,113 +2,106 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.commons.lang.StringUtils;
import org.scribe.utils.OAuthEncoder;
import org.scribe.utils.Preconditions;
/**
* @author: Pablo Fernandez
*/
-public class ParameterList
-{
- private static final char QUERY_STRING_SEPARATOR = '?';
- private static final String PARAM_SEPARATOR = "&";
- private static final String PAIR_SEPARATOR = "=";
- private static final String EMPTY_STRING = "";
-
- private final List params;
-
- public ParameterList()
- {
- params = new ArrayList();
- }
-
- ParameterList(List params)
- {
- this.params = new ArrayList(params);
- }
-
- public ParameterList(Map map)
- {
- this();
- for(Map.Entry entry : map.entrySet())
- {
- params.add(new Parameter(entry.getKey(), entry.getValue()));
+public class ParameterList {
+ private static final String QUERY_STRING_SEPARATOR = "?";
+ private static final String PARAM_SEPARATOR = "&";
+ private static final String PAIR_SEPARATOR = "=";
+ private static final String EMPTY_STRING = "";
+
+ private final List/**/params;
+
+ public ParameterList() {
+ params = new ArrayList/**/();
}
- }
-
- public void add(String key, String value)
- {
- params.add(new Parameter(key, value));
- }
-
- public String appendTo(String url)
- {
- Preconditions.checkNotNull(url, "Cannot append to null URL");
- String queryString = asFormUrlEncodedString();
- if (queryString.equals(EMPTY_STRING))
- {
- return url;
+
+ ParameterList(final List/**/params) {
+ this.params = new ArrayList/**/(params);
}
- else
- {
- url += url.indexOf(QUERY_STRING_SEPARATOR) != -1 ? PARAM_SEPARATOR : QUERY_STRING_SEPARATOR;
- url += queryString;
- return url;
+
+ public ParameterList(final Map/**/map) {
+ this();
+ final Iterator i = map.entrySet().iterator();
+ while (i.hasNext()) {
+ final Map.Entry/**/entry = (Entry) i.next();
+ params.add(new Parameter((String) entry.getKey(), (String) entry.getValue()));
+ }
}
- }
- public String asOauthBaseString()
- {
- return OAuthEncoder.encode(asFormUrlEncodedString());
- }
+ public void add(final String key, final String value) {
+ params.add(new Parameter(key, value));
+ }
- public String asFormUrlEncodedString()
- {
- if (params.size() == 0) return EMPTY_STRING;
+ public String appendTo(String url) {
+ Preconditions.checkNotNull(url, "Cannot append to null URL");
+ final String queryString = asFormUrlEncodedString();
+ if (EMPTY_STRING.equals(queryString)) {
+ return url;
+ } else {
+ url += url.indexOf(QUERY_STRING_SEPARATOR) < 0 ? QUERY_STRING_SEPARATOR
+ : PARAM_SEPARATOR;
+ url += queryString;
+ return url;
+ }
+ }
- StringBuilder builder = new StringBuilder();
- for(Parameter p : params)
- {
- builder.append('&').append(p.asUrlEncodedPair());
+ public String asOauthBaseString() {
+ return OAuthEncoder.encode(asFormUrlEncodedString());
}
- return builder.toString().substring(1);
- }
-
- public void addAll(ParameterList other)
- {
- params.addAll(other.params);
- }
-
- public void addQuerystring(String queryString)
- {
- if (queryString != null && queryString.length() > 0)
- {
- for (String param : queryString.split(PARAM_SEPARATOR))
- {
- String pair[] = param.split(PAIR_SEPARATOR);
- String key = OAuthEncoder.decode(pair[0]);
- String value = pair.length > 1 ? OAuthEncoder.decode(pair[1]) : EMPTY_STRING;
- params.add(new Parameter(key, value));
- }
+
+ public String asFormUrlEncodedString() {
+ if (params.size() == 0) {
+ return EMPTY_STRING;
+ }
+
+ final StringBuffer builder = new StringBuffer();
+ final Iterator i = params.iterator();
+ while (i.hasNext()) {
+ final Parameter p = (Parameter) i.next();
+ builder.append('&').append(p.asUrlEncodedPair());
+ }
+ return builder.toString().substring(1);
+ }
+
+ public void addAll(final ParameterList other) {
+ params.addAll(other.params);
+ }
+
+ public void addQuerystring(final String queryString) {
+ if (queryString != null && queryString.length() > 0) {
+ final String[] vals = StringUtils.split(queryString, PARAM_SEPARATOR);
+ for (int i = 0; i < vals.length; i++) {
+ final String param = vals[i];
+ final String pair[] = StringUtils.split(param, PAIR_SEPARATOR);
+ final String key = OAuthEncoder.decode(pair[0]);
+ final String value = pair.length > 1 ? OAuthEncoder.decode(pair[1]) : EMPTY_STRING;
+ params.add(new Parameter(key, value));
+ }
+ }
+ }
+
+ public boolean contains(final Parameter param) {
+ return params.contains(param);
+ }
+
+ public int size() {
+ return params.size();
+ }
+
+ public ParameterList sort() {
+ final ParameterList sorted = new ParameterList(params);
+ Collections.sort(sorted.params);
+ return sorted;
}
- }
-
- public boolean contains(Parameter param)
- {
- return params.contains(param);
- }
-
- public int size()
- {
- return params.size();
- }
-
- public ParameterList sort()
- {
- ParameterList sorted = new ParameterList(params);
- Collections.sort(sorted.params);
- return sorted;
- }
}
diff --git a/src/main/java/org/scribe/model/Request.java b/src/main/java/org/scribe/model/Request.java
index 0202db0a2..a015233ab 100644
--- a/src/main/java/org/scribe/model/Request.java
+++ b/src/main/java/org/scribe/model/Request.java
@@ -1,382 +1,112 @@
-package org.scribe.model;
-
-import java.io.*;
-import java.net.*;
-import java.nio.charset.*;
-import java.util.*;
-import java.util.concurrent.*;
-
-import org.scribe.exceptions.*;
-
-/**
- * Represents an HTTP Request object
- *
- * @author Pablo Fernandez
- */
-public class Request
-{
- private static final String CONTENT_LENGTH = "Content-Length";
- private static final String CONTENT_TYPE = "Content-Type";
- private static RequestTuner NOOP = new RequestTuner() {
- @Override public void tune(Request _){}
- };
- public static final String DEFAULT_CONTENT_TYPE = "application/x-www-form-urlencoded";
-
- private String url;
- private Verb verb;
- private ParameterList querystringParams;
- private ParameterList bodyParams;
- private Map headers;
- private String payload = null;
- private HttpURLConnection connection;
- private String charset;
- private byte[] bytePayload = null;
- private boolean connectionKeepAlive = false;
- private boolean followRedirects = true;
- private Long connectTimeout = null;
- private Long readTimeout = null;
-
- /**
- * Creates a new Http Request
- *
- * @param verb Http Verb (GET, POST, etc)
- * @param url url with optional querystring parameters.
- */
- public Request(Verb verb, String url)
- {
- this.verb = verb;
- this.url = url;
- this.querystringParams = new ParameterList();
- this.bodyParams = new ParameterList();
- this.headers = new HashMap();
- }
-
- /**
- * Execute the request and return a {@link Response}
- *
- * @return Http Response
- * @throws RuntimeException
- * if the connection cannot be created.
- */
- public Response send(RequestTuner tuner)
- {
- try
- {
- createConnection();
- return doSend(tuner);
- }
- catch (Exception e)
- {
- throw new OAuthConnectionException(e);
- }
- }
-
- public Response send()
- {
- return send(NOOP);
- }
-
- private void createConnection() throws IOException
- {
- String completeUrl = getCompleteUrl();
- if (connection == null)
- {
- System.setProperty("http.keepAlive", connectionKeepAlive ? "true" : "false");
- connection = (HttpURLConnection) new URL(completeUrl).openConnection();
- connection.setInstanceFollowRedirects(followRedirects);
- }
- }
-
- /**
- * Returns the complete url (host + resource + encoded querystring parameters).
- *
- * @return the complete url.
- */
- public String getCompleteUrl()
- {
- return querystringParams.appendTo(url);
- }
-
- Response doSend(RequestTuner tuner) throws IOException
- {
- connection.setRequestMethod(this.verb.name());
- if (connectTimeout != null)
- {
- connection.setConnectTimeout(connectTimeout.intValue());
- }
- if (readTimeout != null)
- {
- connection.setReadTimeout(readTimeout.intValue());
- }
- addHeaders(connection);
- if (verb.equals(Verb.PUT) || verb.equals(Verb.POST))
- {
- addBody(connection, getByteBodyContents());
- }
- tuner.tune(this);
- return new Response(connection);
- }
-
- void addHeaders(HttpURLConnection conn)
- {
- for (String key : headers.keySet())
- conn.setRequestProperty(key, headers.get(key));
- }
-
- void addBody(HttpURLConnection conn, byte[] content) throws IOException
- {
- conn.setRequestProperty(CONTENT_LENGTH, String.valueOf(content.length));
-
- // Set default content type if none is set.
- if (conn.getRequestProperty(CONTENT_TYPE) == null)
- {
- conn.setRequestProperty(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
- }
- conn.setDoOutput(true);
- conn.getOutputStream().write(content);
- }
-
- /**
- * Add an HTTP Header to the Request
- *
- * @param key the header name
- * @param value the header value
- */
- public void addHeader(String key, String value)
- {
- this.headers.put(key, value);
- }
-
- /**
- * Add a body Parameter (for POST/ PUT Requests)
- *
- * @param key the parameter name
- * @param value the parameter value
- */
- public void addBodyParameter(String key, String value)
- {
- this.bodyParams.add(key, value);
- }
-
- /**
- * Add a QueryString parameter
- *
- * @param key the parameter name
- * @param value the parameter value
- */
- public void addQuerystringParameter(String key, String value)
- {
- this.querystringParams.add(key, value);
- }
-
- /**
- * Add body payload.
- *
- * This method is used when the HTTP body is not a form-url-encoded string,
- * but another thing. Like for example XML.
- *
- * Note: The contents are not part of the OAuth signature
- *
- * @param payload the body of the request
- */
- public void addPayload(String payload)
- {
- this.payload = payload;
- }
-
- /**
- * Overloaded version for byte arrays
- *
- * @param payload
- */
- public void addPayload(byte[] payload)
- {
- this.bytePayload = payload.clone();
- }
-
- /**
- * Get a {@link ParameterList} with the query string parameters.
- *
- * @return a {@link ParameterList} containing the query string parameters.
- * @throws OAuthException if the request URL is not valid.
- */
- public ParameterList getQueryStringParams()
- {
- try
- {
- ParameterList result = new ParameterList();
- String queryString = new URL(url).getQuery();
- result.addQuerystring(queryString);
- result.addAll(querystringParams);
- return result;
- }
- catch (MalformedURLException mue)
- {
- throw new OAuthException("Malformed URL", mue);
- }
- }
-
- /**
- * Obtains a {@link ParameterList} of the body parameters.
- *
- * @return a {@link ParameterList}containing the body parameters.
- */
- public ParameterList getBodyParams()
- {
- return bodyParams;
- }
-
- /**
- * Obtains the URL of the HTTP Request.
- *
- * @return the original URL of the HTTP Request
- */
- public String getUrl()
- {
- return url;
- }
-
- /**
- * Returns the URL without the port and the query string part.
- *
- * @return the OAuth-sanitized URL
- */
- public String getSanitizedUrl()
- {
- return url.replaceAll("\\?.*", "").replace("\\:\\d{4}", "");
- }
-
- /**
- * Returns the body of the request
- *
- * @return form encoded string
- * @throws OAuthException if the charset chosen is not supported
- */
- public String getBodyContents()
- {
- try
- {
- return new String(getByteBodyContents(),getCharset());
- }
- catch(UnsupportedEncodingException uee)
- {
- throw new OAuthException("Unsupported Charset: "+charset, uee);
- }
- }
-
- byte[] getByteBodyContents()
- {
- if (bytePayload != null) return bytePayload;
- String body = (payload != null) ? payload : bodyParams.asFormUrlEncodedString();
- try
- {
- return body.getBytes(getCharset());
- }
- catch(UnsupportedEncodingException uee)
- {
- throw new OAuthException("Unsupported Charset: "+getCharset(), uee);
- }
- }
-
- /**
- * Returns the HTTP Verb
- *
- * @return the verb
- */
- public Verb getVerb()
- {
- return verb;
- }
-
- /**
- * Returns the connection headers as a {@link Map}
- *
- * @return map of headers
- */
- public Map getHeaders()
- {
- return headers;
- }
-
- /**
- * Returns the connection charset. Defaults to {@link Charset} defaultCharset if not set
- *
- * @return charset
- */
- public String getCharset()
- {
- return charset == null ? Charset.defaultCharset().name() : charset;
- }
-
- /**
- * Sets the connect timeout for the underlying {@link HttpURLConnection}
- *
- * @param duration duration of the timeout
- *
- * @param unit unit of time (milliseconds, seconds, etc)
- */
- public void setConnectTimeout(int duration, TimeUnit unit)
- {
- this.connectTimeout = unit.toMillis(duration);
- }
-
- /**
- * Sets the read timeout for the underlying {@link HttpURLConnection}
- *
- * @param duration duration of the timeout
- *
- * @param unit unit of time (milliseconds, seconds, etc)
- */
- public void setReadTimeout(int duration, TimeUnit unit)
- {
- this.readTimeout = unit.toMillis(duration);
- }
-
- /**
- * Set the charset of the body of the request
- *
- * @param charsetName name of the charset of the request
- */
- public void setCharset(String charsetName)
- {
- this.charset = charsetName;
- }
-
- /**
- * Sets whether the underlying Http Connection is persistent or not.
- *
- * @see http://download.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html
- * @param connectionKeepAlive
- */
- public void setConnectionKeepAlive(boolean connectionKeepAlive)
- {
- this.connectionKeepAlive = connectionKeepAlive;
- }
-
- /**
- * Sets whether the underlying Http Connection follows redirects or not.
- *
- * Defaults to true (follow redirects)
- *
- * @see http://docs.oracle.com/javase/6/docs/api/java/net/HttpURLConnection.html#setInstanceFollowRedirects(boolean)
- * @param followRedirects
- */
- public void setFollowRedirects(boolean followRedirects)
- {
- this.followRedirects = followRedirects;
- }
-
- /*
- * We need this in order to stub the connection object for test cases
- */
- void setConnection(HttpURLConnection connection)
- {
- this.connection = connection;
- }
-
- @Override
- public String toString()
- {
- return String.format("@Request(%s %s)", getVerb(), getUrl());
- }
-}
+/**
+ *
+ */
+package org.scribe.model;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.scribe.exceptions.OAuthException;
+
+/**
+ * @author DMusser
+ *
+ */
+public interface Request {
+
+ public static final String DEFAULT_CONTENT_TYPE = "application/x-www-form-urlencoded";
+
+ /**
+ * Execute the request and return a {@link ResponseHttpImpl}
+ *
+ * @return Response
+ * @throws IOException
+ */
+ public Response send() throws IOException;
+
+ /**
+ * Add an HTTP Header to the RequestHttpImpl
+ *
+ * @param key the header name
+ * @param name the header name
+ */
+ public void addHeader(final String key, final String value);
+
+ /**
+ * Add a body Parameter (for POST/ PUT Requests)
+ *
+ * @param key the parameter name
+ * @param name the parameter name
+ */
+ public void addBodyParameter(final String key, final String value);
+
+ /**
+ * Add a QueryString parameter
+ *
+ * @param key the parameter name
+ * @param name the parameter name
+ */
+ public void addQuerystringParameter(final String key, final String value);
+
+ /**
+ * Add body payload.
+ *
+ * This method is used when the HTTP body is not a form-url-encoded string,
+ * but another thing. Like for example XML.
+ *
+ * Note: The contents are not part of the OAuth signature
+ *
+ * @param payload the body of the request
+ */
+ public void addPayload(final String payload) throws IOException;
+
+ /**
+ * Overloaded version for byte arrays
+ *
+ * @param payload
+ */
+ public void addPayload(final byte[] payload) throws IOException;
+
+ /**
+ *
+ * @return
+ */
+ public String getPayload();
+
+ /**
+ * Get a {@link ParameterList} with the query string parameters.
+ *
+ * @return a {@link ParameterList} containing the query string parameters.
+ * @throws OAuthException if the request URL is not valid.
+ */
+ public ParameterList getQueryStringParams();
+
+ /**
+ * Obtains a {@link ParameterList} of the body parameters.
+ *
+ * @return a {@link ParameterList}containing the body parameters.
+ */
+ public ParameterList getBodyParams();
+
+ /**
+ * Obtains the URL of the HTTP RequestHttpImpl.
+ *
+ * @return the original URL of the HTTP RequestHttpImpl
+ */
+ public String getUrl();
+
+ /**
+ * Returns the HTTP Verb
+ *
+ * @return the verb
+ */
+ public Verb getVerb();
+
+ /**
+ * Returns the connection headers as a {@link Map}
+ *
+ * @return map of headers
+ */
+ public Map/**/getHeaders();
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/model/RequestHttpImpl.java b/src/main/java/org/scribe/model/RequestHttpImpl.java
new file mode 100644
index 000000000..6598564a9
--- /dev/null
+++ b/src/main/java/org/scribe/model/RequestHttpImpl.java
@@ -0,0 +1,183 @@
+package org.scribe.model;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.exceptions.OAuthException;
+
+/**
+ * Represents an HTTP RequestHttpImpl object
+ */
+public class RequestHttpImpl implements Request {
+
+ private static final String CONTENT_LENGTH = "Content-Length";
+ private static final String CONTENT_TYPE = "Content-Type";
+ private final String url;
+ private final Verb verb;
+ private final ParameterList querystringParams;
+ private final ParameterList bodyParams;
+ private final Map/**/headers;
+ private String charset;
+ private String content = null;
+
+ private HttpURLConnection connection;
+
+ /**
+ * Creates a new Http RequestHttpImpl
+ *
+ * @param verb Http Verb (GET, POST, etc)
+ * @param url url with optional querystring parameters.
+ */
+ public RequestHttpImpl(final Verb verb, final String url) {
+ super();
+ this.verb = verb;
+ this.url = url;
+ querystringParams = new ParameterList();
+ bodyParams = new ParameterList();
+ headers = new HashMap/**/();
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getCompleteUrl()
+ */
+ public String getCompleteUrl() {
+ return querystringParams.appendTo(url);
+ }
+
+ void addHeaders(final HttpURLConnection conn) {
+ final Iterator i = headers.keySet().iterator();
+ while (i.hasNext()) {
+ final String key = (String) i.next();
+ conn.setRequestProperty(key, (String) headers.get(key));
+ }
+ }
+
+ public void addPayload(final byte[] content) throws IOException {
+ addPayload(new String(content));
+ }
+
+ public void addPayload(final String content) throws IOException {
+ this.content = content;
+ }
+
+ public String getPayload() {
+ return content;
+ }
+
+ /**
+ * TODO implement
+ */
+ public Response send() throws IOException {
+ connection.setRequestProperty(CONTENT_LENGTH, String.valueOf(content.length()));
+
+ // Set default content type if none is set.
+ if (connection.getRequestProperty(CONTENT_TYPE) == null) {
+ connection.setRequestProperty(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
+ }
+ connection.setDoOutput(true);
+ // connection.getOutputStream().write(content);
+ final Response response = new ResponseHttpImpl(connection);
+ return response;
+ // return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#addHeader(java.lang.String, java.lang.String)
+ */
+ public void addHeader(final String key, final String value) {
+ headers.put(key, value);
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#addBodyParameter(java.lang.String, java.lang.String)
+ */
+ public void addBodyParameter(final String key, final String value) {
+ bodyParams.add(key, value);
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#addQuerystringParameter(java.lang.String, java.lang.String)
+ */
+ public void addQuerystringParameter(final String key, final String value) {
+ querystringParams.add(key, value);
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getQueryStringParams()
+ */
+ public ParameterList getQueryStringParams() {
+ try {
+ final ParameterList result = new ParameterList();
+ final String queryString = new URL(url).getQuery();
+ result.addQuerystring(queryString);
+ result.addAll(querystringParams);
+ return result;
+ } catch (final MalformedURLException mue) {
+ throw new OAuthException("Malformed URL", mue);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getBodyParams()
+ */
+ public ParameterList getBodyParams() {
+ return bodyParams;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getUrl()
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getSanitizedUrl()
+ */
+ public String getSanitizedUrl() {
+ return StringUtils.replace(StringUtils.replace(url, "\\?.*", ""), "\\:\\d{4}", "");
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getVerb()
+ */
+ public Verb getVerb() {
+ return verb;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getHeaders()
+ */
+ public Map/**/getHeaders() {
+ return headers;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#getCharset()
+ */
+ public String getCharset() {
+ return charset == null ? Charset.defaultCharset().name() : charset;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Request#toString()
+ */
+ public String toString() {
+ return "@RequestHttpImpl(" + String.valueOf(getVerb()) + " " + getUrl() + ")";
+ }
+
+ /**
+ * @return
+ */
+ public String getBodyContents() {
+ return getPayload();
+ }
+
+}
diff --git a/src/main/java/org/scribe/model/Response.java b/src/main/java/org/scribe/model/Response.java
index d433922c6..711c28f59 100644
--- a/src/main/java/org/scribe/model/Response.java
+++ b/src/main/java/org/scribe/model/Response.java
@@ -1,126 +1,63 @@
-package org.scribe.model;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-import org.scribe.exceptions.*;
-import org.scribe.utils.*;
-
/**
- * Represents an HTTP Response.
*
- * @author Pablo Fernandez
*/
-public class Response
-{
- private static final String EMPTY = "";
-
- private int code;
- private String message;
- private String body;
- private InputStream stream;
- private Map headers;
-
- Response(HttpURLConnection connection) throws IOException
- {
- try
- {
- connection.connect();
- code = connection.getResponseCode();
- message = connection.getResponseMessage();
- headers = parseHeaders(connection);
- stream = isSuccessful() ? connection.getInputStream() : connection.getErrorStream();
- }
- catch (UnknownHostException e)
- {
- throw new OAuthException("The IP address of a host could not be determined.", e);
- }
- }
-
- private String parseBodyContents()
- {
- body = StreamUtils.getStreamContents(getStream());
- return body;
- }
-
- private Map parseHeaders(HttpURLConnection conn)
- {
- Map headers = new HashMap();
- for (String key : conn.getHeaderFields().keySet())
- {
- headers.put(key, conn.getHeaderFields().get(key).get(0));
- }
- return headers;
- }
-
- public boolean isSuccessful()
- {
- return getCode() >= 200 && getCode() < 400;
- }
-
- /**
- * Obtains the HTTP Response body
- *
- * @return response body
- */
- public String getBody()
- {
- return body != null ? body : parseBodyContents();
- }
-
- /**
- * Obtains the meaningful stream of the HttpUrlConnection, either inputStream
- * or errorInputStream, depending on the status code
- *
- * @return input stream / error stream
- */
- public InputStream getStream()
- {
- return stream;
- }
-
- /**
- * Obtains the HTTP status code
- *
- * @return the status code
- */
- public int getCode()
- {
- return code;
- }
-
- /**
- * Obtains the HTTP status message.
- * Returns null if the message can not be discerned from the response (not valid HTTP)
- *
- * @return the status message
- */
- public String getMessage()
- {
- return message;
- }
+package org.scribe.model;
- /**
- * Obtains a {@link Map} containing the HTTP Response Headers
- *
- * @return headers
- */
- public Map getHeaders()
- {
- return headers;
- }
+import java.io.InputStream;
+import java.util.Map;
- /**
- * Obtains a single HTTP Header value, or null if undefined
- *
- * @param name the header name.
- *
- * @return header value or null.
- */
- public String getHeader(String name)
- {
- return headers.get(name);
- }
+/**
+ * @author DMusser
+ *
+ */
+public interface Response {
+
+ public boolean isSuccessful();
+
+ /**
+ * Obtains the HTTP ResponseHttpImpl body
+ *
+ * @return response body
+ */
+ public String getBody();
+
+ /**
+ * Obtains the meaningful stream of the HttpUrlConnection, either inputStream
+ * or errorInputStream, depending on the status code
+ *
+ * @return input stream / error stream
+ */
+ public InputStream getStream();
+
+ /**
+ * Obtains the HTTP status code
+ *
+ * @return the status code
+ */
+ public int getCode();
+
+ /**
+ * Obtains the HTTP status message.
+ * Returns null if the message can not be discerned from the response (not valid HTTP)
+ *
+ * @return the status message
+ */
+ public String getMessage();
+
+ /**
+ * Obtains a {@link Map} containing the HTTP ResponseHttpImpl Headers
+ *
+ * @return headers
+ */
+ public Map/**/getHeaders();
+
+ /**
+ * Obtains a single HTTP Header name, or null if undefined
+ *
+ * @param name the header name.
+ *
+ * @return header name or null.
+ */
+ public String getHeader(final String name);
}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/model/ResponseHttpImpl.java b/src/main/java/org/scribe/model/ResponseHttpImpl.java
new file mode 100644
index 000000000..8d60df56d
--- /dev/null
+++ b/src/main/java/org/scribe/model/ResponseHttpImpl.java
@@ -0,0 +1,104 @@
+package org.scribe.model;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.UnknownHostException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.scribe.exceptions.OAuthException;
+import org.scribe.utils.StreamUtils;
+
+/**
+ * Represents an HTTP ResponseHttpImpl.
+ *
+ * @author Pablo Fernandez
+ */
+public class ResponseHttpImpl implements Response {
+
+ private int code;
+ private String message;
+ private String body;
+ private InputStream stream;
+ private Map/**/headers;
+
+ ResponseHttpImpl(final HttpURLConnection connection) throws IOException {
+ try {
+ connection.connect();
+ code = connection.getResponseCode();
+ message = connection.getResponseMessage();
+ headers = parseHeaders(connection);
+ stream = isSuccessful() ? connection.getInputStream() : connection.getErrorStream();
+ } catch (final UnknownHostException e) {
+ throw new OAuthException("The IP address of a host could not be determined.", e);
+ }
+ }
+
+ private String parseBodyContents() {
+ body = StreamUtils.getStreamContents(getStream());
+ return body;
+ }
+
+ private Map/**/parseHeaders(final HttpURLConnection conn) {
+ final Map/**/headers = new HashMap/**/();
+ final Iterator i = conn.getHeaderFields().keySet().iterator();
+ while (i.hasNext()) {
+ final String key = (String) i.next();
+ headers.put(key, ((Collection) conn.getHeaderFields().get(key)).toArray()[0]);
+ }
+ return headers;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Response#isSuccessful()
+ */
+ public boolean isSuccessful() {
+ return getCode() >= 200 && getCode() < 400;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Response#getBody()
+ */
+ public String getBody() {
+ return body != null ? body : parseBodyContents();
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Response#getStream()
+ */
+ public InputStream getStream() {
+ return stream;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Response#getCode()
+ */
+ public int getCode() {
+ return code;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Response#getMessage()
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Response#getHeaders()
+ */
+ public Map/**/getHeaders() {
+ return headers;
+ }
+
+ /* (non-Javadoc)
+ * @see org.scribe.model.Response#getHeader(java.lang.String)
+ */
+ public String getHeader(final String name) {
+ return (String) headers.get(name);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/model/SignatureType.java b/src/main/java/org/scribe/model/SignatureType.java
index 3440a361f..670accae5 100644
--- a/src/main/java/org/scribe/model/SignatureType.java
+++ b/src/main/java/org/scribe/model/SignatureType.java
@@ -1,7 +1,58 @@
package org.scribe.model;
-public enum SignatureType
-{
- Header,
- QueryString
+public class SignatureType {
+ public static final SignatureType Header = new SignatureType("Header");
+ public static final SignatureType QueryString = new SignatureType("QueryString");
+
+ final String name;
+
+ public SignatureType(final String string) {
+ super();
+ name = string;
+ }
+
+ public String name() {
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Verb other = (Verb) obj;
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
+ }
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return name;
+ }
}
diff --git a/src/main/java/org/scribe/model/Token.java b/src/main/java/org/scribe/model/Token.java
index 4d8c0eeb5..b30bb5c35 100644
--- a/src/main/java/org/scribe/model/Token.java
+++ b/src/main/java/org/scribe/model/Token.java
@@ -1,98 +1,89 @@
package org.scribe.model;
-import java.io.*;
-import org.scribe.utils.*;
+import java.io.Serializable;
+
+import org.scribe.utils.Preconditions;
/**
* Represents an OAuth token (either request or access token) and its secret
*
* @author Pablo Fernandez
*/
-public class Token implements Serializable
-{
- private static final long serialVersionUID = 715000866082812683L;
-
- private final String token;
- private final String secret;
- private final String rawResponse;
-
- /**
- * Default constructor
- *
- * @param token token value. Can't be null.
- * @param secret token secret. Can't be null.
- */
- public Token(String token, String secret)
- {
- this(token, secret, null);
- }
-
- public Token(String token, String secret, String rawResponse)
- {
- Preconditions.checkNotNull(token, "Token can't be null");
- Preconditions.checkNotNull(secret, "Secret can't be null");
-
- this.token = token;
- this.secret = secret;
- this.rawResponse = rawResponse;
- }
-
- public String getToken()
- {
- return token;
- }
-
- public String getSecret()
- {
- return secret;
- }
-
- public String getRawResponse()
- {
- if (rawResponse == null)
- {
- throw new IllegalStateException("This token object was not constructed by scribe and does not have a rawResponse");
+public class Token implements Serializable {
+ private static final long serialVersionUID = 715000866082812683L;
+
+ private final String token;
+ private final String secret;
+ private final String rawResponse;
+
+ /**
+ * Default constructor
+ *
+ * @param token token name. Can't be null.
+ * @param secret token secret. Can't be null.
+ */
+ public Token(final String token, final String secret) {
+ this(token, secret, null);
+ }
+
+ public Token(final String token, final String secret, final String rawResponse) {
+ Preconditions.checkNotNull(token, "Token can't be null");
+ Preconditions.checkNotNull(secret, "Secret can't be null");
+
+ this.token = token;
+ this.secret = secret;
+ this.rawResponse = rawResponse;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public String getRawResponse() {
+ if (rawResponse == null) {
+ throw new IllegalStateException(
+ "This token object was not constructed by scribe and does not have a rawResponse");
+ }
+ return rawResponse;
+ }
+
+ public String toString() {
+ return "Token[" + String.valueOf(token) + String.valueOf(secret) + "]";
+ }
+
+ /**
+ * Returns true if the token is empty (token = "", secret = "")
+ */
+ public boolean isEmpty() {
+ return "".equals(token) && "".equals(secret);
+ }
+
+ /**
+ * Factory method that returns an empty token (token = "", secret = "").
+ *
+ * Useful for two legged OAuth.
+ */
+ public static Token empty() {
+ return new Token("", "");
+ }
+
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ final Token that = (Token) o;
+ return token.equals(that.token) && secret.equals(that.secret);
+ }
+
+ public int hashCode() {
+ return 31 * token.hashCode() + secret.hashCode();
}
- return rawResponse;
- }
-
- @Override
- public String toString()
- {
- return String.format("Token[%s , %s]", token, secret);
- }
-
- /**
- * Returns true if the token is empty (token = "", secret = "")
- */
- public boolean isEmpty()
- {
- return "".equals(this.token) && "".equals(this.secret);
- }
-
- /**
- * Factory method that returns an empty token (token = "", secret = "").
- *
- * Useful for two legged OAuth.
- */
- public static Token empty()
- {
- return new Token("", "");
- }
-
- @Override
- public boolean equals(Object o)
- {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Token that = (Token) o;
- return token.equals(that.token) && secret.equals(that.secret);
- }
-
- @Override
- public int hashCode()
- {
- return 31 * token.hashCode() + secret.hashCode();
- }
}
diff --git a/src/main/java/org/scribe/model/Verb.java b/src/main/java/org/scribe/model/Verb.java
index 0c22f6690..daa9f75e3 100644
--- a/src/main/java/org/scribe/model/Verb.java
+++ b/src/main/java/org/scribe/model/Verb.java
@@ -5,7 +5,70 @@
*
* @author Pablo Fernandez
*/
-public enum Verb
-{
- GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE, PATCH
+public class Verb {
+
+ public static final Verb GET = new Verb("GET");
+ public static final Verb POST = new Verb("POST");
+ public static final Verb PUT = new Verb("PUT");
+ public static final Verb DELETE = new Verb("DELETE");
+ public static final Verb HEAD = new Verb("HEAD");
+ public static final Verb OPTIONS = new Verb("OPTIONS");
+ public static final Verb TRACE = new Verb("TRACE");
+ public static final Verb PATCH = new Verb("PATCH");
+
+ final String name;
+
+ /**
+ * @param string
+ */
+ public Verb(final String string) {
+ super();
+ name = string;
+ }
+
+ public String name() {
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Verb other = (Verb) obj;
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
+ }
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return name;
+ }
+
}
diff --git a/src/main/java/org/scribe/model/Verifier.java b/src/main/java/org/scribe/model/Verifier.java
index 45f0e4ea3..df3ea34f1 100644
--- a/src/main/java/org/scribe/model/Verifier.java
+++ b/src/main/java/org/scribe/model/Verifier.java
@@ -15,7 +15,7 @@ public class Verifier
/**
* Default constructor.
*
- * @param value verifier value
+ * @param name verifier name
*/
public Verifier(String value)
{
diff --git a/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java b/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java
index abde25399..5e064ff31 100644
--- a/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java
+++ b/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java
@@ -1,190 +1,177 @@
package org.scribe.oauth;
-import java.util.*;
-
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.services.*;
-import org.scribe.utils.*;
-import java.util.concurrent.TimeUnit;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.scribe.builder.api.DefaultApi10a;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.OAuthConstants;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.SignatureType;
+import org.scribe.model.Token;
+import org.scribe.model.Verifier;
+import org.scribe.services.Base64Encoder;
+import org.scribe.utils.MapUtils;
/**
* OAuth 1.0a implementation of {@link OAuthService}
*
* @author Pablo Fernandez
*/
-public class OAuth10aServiceImpl implements OAuthService
-{
- private static final String VERSION = "1.0";
-
- private OAuthConfig config;
- private DefaultApi10a api;
-
- /**
- * Default constructor
- *
- * @param api OAuth1.0a api information
- * @param config OAuth 1.0a configuration param object
- */
- public OAuth10aServiceImpl(DefaultApi10a api, OAuthConfig config)
- {
- this.api = api;
- this.config = config;
- }
-
- /**
- * {@inheritDoc}
- */
- public Token getRequestToken(int timeout, TimeUnit unit)
- {
- return getRequestToken(new TimeoutTuner(timeout, unit));
- }
-
- public Token getRequestToken()
- {
- return getRequestToken(2, TimeUnit.SECONDS);
- }
-
- public Token getRequestToken(RequestTuner tuner)
- {
- config.log("obtaining request token from " + api.getRequestTokenEndpoint());
- OAuthRequest request = new OAuthRequest(api.getRequestTokenVerb(), api.getRequestTokenEndpoint());
-
- config.log("setting oauth_callback to " + config.getCallback());
- request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback());
- addOAuthParams(request, OAuthConstants.EMPTY_TOKEN);
- appendSignature(request);
-
- config.log("sending request...");
- Response response = request.send(tuner);
- String body = response.getBody();
-
- config.log("response status code: " + response.getCode());
- config.log("response body: " + body);
- return api.getRequestTokenExtractor().extract(body);
- }
-
- private void addOAuthParams(OAuthRequest request, Token token)
- {
- request.addOAuthParameter(OAuthConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds());
- request.addOAuthParameter(OAuthConstants.NONCE, api.getTimestampService().getNonce());
- request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, config.getApiKey());
- request.addOAuthParameter(OAuthConstants.SIGN_METHOD, api.getSignatureService().getSignatureMethod());
- request.addOAuthParameter(OAuthConstants.VERSION, getVersion());
- if(config.hasScope()) request.addOAuthParameter(OAuthConstants.SCOPE, config.getScope());
- request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, token));
-
- config.log("appended additional OAuth parameters: " + MapUtils.toString(request.getOauthParameters()));
- }
-
- /**
- * {@inheritDoc}
- */
- public Token getAccessToken(Token requestToken, Verifier verifier, int timeout, TimeUnit unit)
- {
- return getAccessToken(requestToken, verifier, new TimeoutTuner(timeout, unit));
- }
-
- public Token getAccessToken(Token requestToken, Verifier verifier)
- {
- return getAccessToken(requestToken, verifier, 2, TimeUnit.SECONDS);
- }
-
- public Token getAccessToken(Token requestToken, Verifier verifier, RequestTuner tuner)
- {
- config.log("obtaining access token from " + api.getAccessTokenEndpoint());
- OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
- request.addOAuthParameter(OAuthConstants.TOKEN, requestToken.getToken());
- request.addOAuthParameter(OAuthConstants.VERIFIER, verifier.getValue());
-
- config.log("setting token to: " + requestToken + " and verifier to: " + verifier);
- addOAuthParams(request, requestToken);
- appendSignature(request);
- Response response = request.send(tuner);
- return api.getAccessTokenExtractor().extract(response.getBody());
- }
-
- /**
- * {@inheritDoc}
- */
- public void signRequest(Token token, OAuthRequest request)
- {
- config.log("signing request: " + request.getCompleteUrl());
-
- // Do not append the token if empty. This is for two legged OAuth calls.
- if (!token.isEmpty())
- {
- request.addOAuthParameter(OAuthConstants.TOKEN, token.getToken());
+public class OAuth10aServiceImpl implements OAuthService {
+ private static final String VERSION = "1.0";
+
+ protected final OAuthConfig config;
+ protected final DefaultApi10a api;
+
+ /**
+ * Default constructor
+ *
+ * @param api OAuth1.0a api information
+ * @param config OAuth 1.0a configuration param object
+ */
+ public OAuth10aServiceImpl(final DefaultApi10a api, final OAuthConfig config) {
+ this.api = api;
+ this.config = config;
+ }
+
+ public Token getRequestToken() throws IOException {
+ return getRequestToken(null);
+ }
+
+ public Token getRequestToken(final Map parameters) throws IOException {
+ config.log("obtaining request token from " + api.getRequestTokenEndpoint());
+ final OAuthRequest request = config
+ .getOAuthRequestCreatorFactory()
+ .createRequestTokenRequest(api.getRequestTokenVerb(), api.getRequestTokenEndpoint());
+ if (parameters != null && parameters.size() > 0) {
+ final Iterator i = parameters.keySet().iterator();
+ while (i.hasNext()) {
+ final String key = (String) i.next();
+ final String value = (String) parameters.get(key);
+ if (value != null) {
+ request.addQuerystringParameter(key, value);
+ }
+ }
+ }
+ config.log("setting oauth_callback to " + config.getCallback());
+ request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback());
+ addOAuthParams(request, OAuthConstants.EMPTY_TOKEN);
+ appendSignature(request);
+
+ config.log("sending request...");
+ final Response response = request.send();
+ final String body = response.getBody();
+
+ config.log("response status code: " + response.getCode());
+ config.log("response body: " + body);
+ return api.getRequestTokenExtractor().extract(body);
+ }
+
+ protected void addOAuthParams(final OAuthRequest request, final Token token) {
+ request.addOAuthParameter(OAuthConstants.TIMESTAMP, api.getTimestampService()
+ .getTimestampInSeconds());
+ request.addOAuthParameter(OAuthConstants.NONCE, api.getTimestampService().getNonce());
+ request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, config.getApiKey());
+ request.addOAuthParameter(OAuthConstants.SIGN_METHOD, api.getSignatureService()
+ .getSignatureMethod());
+ request.addOAuthParameter(OAuthConstants.VERSION, getVersion());
+ if (config.hasScope()) {
+ request.addOAuthParameter(OAuthConstants.SCOPE, config.getScope());
+ }
+ request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, token));
+
+ config.log("appended additional OAuth parameters: "
+ + MapUtils.toString(request.getOauthParameters()));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Token getAccessToken(final Token requestToken, final Verifier verifier) {
+ config.log("obtaining access token from " + api.getAccessTokenEndpoint());
+ final OAuthRequest request = config.getOAuthRequestCreatorFactory()
+ .createAccessTokenRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
+ request.addOAuthParameter(OAuthConstants.TOKEN, requestToken.getToken());
+ if (verifier != null) {
+ request.addOAuthParameter(OAuthConstants.VERIFIER, verifier.getValue());
+ }
+ config.log("setting token to: " + requestToken + " and verifier to: " + verifier);
+ addOAuthParams(request, requestToken);
+ appendSignature(request);
+ try {
+ final Response response = request.send();
+ return api.getAccessTokenExtractor().extract(response.getBody());
+ } catch (final IOException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Token getAccessToken(final Token requestToken) {
+ return getAccessToken(requestToken, null);
}
- config.log("setting token to: " + token);
- addOAuthParams(request, token);
- appendSignature(request);
- }
-
- /**
- * {@inheritDoc}
- */
- public String getVersion()
- {
- return VERSION;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getAuthorizationUrl(Token requestToken)
- {
- return api.getAuthorizationUrl(requestToken);
- }
-
- private String getSignature(OAuthRequest request, Token token)
- {
- config.log("generating signature...");
- config.log("using base64 encoder: " + Base64Encoder.type());
- String baseString = api.getBaseStringExtractor().extract(request);
- String signature = api.getSignatureService().getSignature(baseString, config.getApiSecret(), token.getSecret());
-
- config.log("base string is: " + baseString);
- config.log("signature is: " + signature);
- return signature;
- }
-
- private void appendSignature(OAuthRequest request)
- {
- switch (config.getSignatureType())
- {
- case Header:
- config.log("using Http Header signature");
-
- String oauthHeader = api.getHeaderExtractor().extract(request);
- request.addHeader(OAuthConstants.HEADER, oauthHeader);
- break;
- case QueryString:
- config.log("using Querystring signature");
-
- for (Map.Entry entry : request.getOauthParameters().entrySet())
- {
- request.addQuerystringParameter(entry.getKey(), entry.getValue());
+
+ /**
+ * {@inheritDoc}
+ */
+ public void signRequest(final Token token, final OAuthRequest request) {
+ config.log("signing request: " + request.getUrl());
+
+ // Do not append the token if empty. This is for two legged OAuth calls.
+ if (!token.isEmpty()) {
+ request.addOAuthParameter(OAuthConstants.TOKEN, token.getToken());
}
- break;
+ config.log("setting token to: " + token);
+ addOAuthParams(request, token);
+ appendSignature(request);
}
- }
- private static class TimeoutTuner extends RequestTuner
- {
- private final int duration;
- private final TimeUnit unit;
+ /**
+ * {@inheritDoc}
+ */
+ public String getVersion() {
+ return VERSION;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getAuthorizationUrl(final Token requestToken) {
+ return api.getAuthorizationUrl(requestToken);
+ }
- public TimeoutTuner(int duration, TimeUnit unit)
- {
- this.duration = duration;
- this.unit = unit;
+ protected String getSignature(final OAuthRequest request, final Token token) {
+ config.log("generating signature...");
+ config.log("using base64 encoder: " + Base64Encoder.type());
+ final String baseString = api.getBaseStringExtractor().extract(request);
+ final String signature = api.getSignatureService().getSignature(baseString,
+ config.getApiSecret(), token.getSecret());
+
+ config.log("base string is: " + baseString);
+ config.log("signature is: " + signature);
+ return signature;
}
- @Override
- public void tune(Request request)
- {
- request.setReadTimeout(duration, unit);
+ protected void appendSignature(final OAuthRequest request) {
+ if (SignatureType.Header.equals(config.getSignatureType())) {
+ config.log("using Http Header signature");
+
+ final String oauthHeader = api.getHeaderExtractor().extract(request);
+ request.addHeader(OAuthConstants.HEADER, oauthHeader);
+ } else if (SignatureType.QueryString.equals(config.getSignatureType())) {
+ config.log("using Querystring signature");
+ final Iterator i = request.getOauthParameters().entrySet().iterator();
+ while (i.hasNext()) {
+ final Map.Entry/**/entry = (Map.Entry) i.next();
+ request.addQuerystringParameter((String) entry.getKey(), (String) entry.getValue());
+ }
+ }
}
- }
+
}
diff --git a/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java b/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java
index 6262c3700..11e1388ce 100644
--- a/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java
+++ b/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java
@@ -1,72 +1,95 @@
package org.scribe.oauth;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
+import java.io.IOException;
-public class OAuth20ServiceImpl implements OAuthService
-{
- private static final String VERSION = "2.0";
-
- private final DefaultApi20 api;
- private final OAuthConfig config;
-
- /**
- * Default constructor
- *
- * @param api OAuth2.0 api information
- * @param config OAuth 2.0 configuration param object
- */
- public OAuth20ServiceImpl(DefaultApi20 api, OAuthConfig config)
- {
- this.api = api;
- this.config = config;
- }
+import org.scribe.builder.api.DefaultApi20;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.OAuthConstants;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Response;
+import org.scribe.model.Token;
+import org.scribe.model.Verifier;
- /**
- * {@inheritDoc}
- */
- public Token getAccessToken(Token requestToken, Verifier verifier)
- {
- OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
- request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey());
- request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret());
- request.addQuerystringParameter(OAuthConstants.CODE, verifier.getValue());
- request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback());
- if(config.hasScope()) request.addQuerystringParameter(OAuthConstants.SCOPE, config.getScope());
- Response response = request.send();
- return api.getAccessTokenExtractor().extract(response.getBody());
- }
+public class OAuth20ServiceImpl implements OAuthService {
+ private static final String VERSION = "2.0";
- /**
- * {@inheritDoc}
- */
- public Token getRequestToken()
- {
- throw new UnsupportedOperationException("Unsupported operation, please use 'getAuthorizationUrl' and redirect your users there");
- }
+ private final DefaultApi20 api;
+ private final OAuthConfig config;
- /**
- * {@inheritDoc}
- */
- public String getVersion()
- {
- return VERSION;
- }
+ /**
+ * Default constructor
+ *
+ * @param api OAuth2.0 api information
+ * @param config OAuth 2.0 configuration param object
+ */
+ public OAuth20ServiceImpl(final DefaultApi20 api, final OAuthConfig config) {
+ this.api = api;
+ this.config = config;
+ }
- /**
- * {@inheritDoc}
- */
- public void signRequest(Token accessToken, OAuthRequest request)
- {
- request.addQuerystringParameter(OAuthConstants.ACCESS_TOKEN, accessToken.getToken());
- }
+ /**
+ * {@inheritDoc}
+ * @throws IOException
+ */
+ public Token getAccessToken(final Token requestToken, final Verifier verifier)
+ throws IOException {
+ final OAuthRequest request = config.getOAuthRequestCreatorFactory()
+ .createAccessTokenRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
+ request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey());
+ request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret());
+ request.addQuerystringParameter(OAuthConstants.CODE, verifier.getValue());
+ request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback());
+ if (config.hasScope()) {
+ request.addQuerystringParameter(OAuthConstants.SCOPE, config.getScope());
+ }
+ final Response response = request.send();
+ return api.getAccessTokenExtractor().extract(response.getBody());
+ }
- /**
- * {@inheritDoc}
- */
- public String getAuthorizationUrl(Token requestToken)
- {
- return api.getAuthorizationUrl(config);
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Token getRequestToken() {
+ throw new UnsupportedOperationException(
+ "Unsupported operation, please use 'getAuthorizationUrl' and redirect your users there");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getVersion() {
+ return VERSION;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void signRequest(final Token accessToken, final OAuthRequest request) {
+ request.addQuerystringParameter(OAuthConstants.ACCESS_TOKEN, accessToken.getToken());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getAuthorizationUrl(final Token requestToken) {
+ return api.getAuthorizationUrl(config);
+ }
+
+ /**
+ * {@inheritDoc}
+ * @throws IOException
+ */
+ public Token getAccessToken(final Token requestToken) throws IOException {
+ final OAuthRequest request = config.getOAuthRequestCreatorFactory()
+ .createAccessTokenRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
+ request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey());
+ request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret());
+ request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback());
+ if (config.hasScope()) {
+ request.addQuerystringParameter(OAuthConstants.SCOPE, config.getScope());
+ }
+ final Response response = request.send();
+ return api.getAccessTokenExtractor().extract(response.getBody());
+ }
}
diff --git a/src/main/java/org/scribe/oauth/OAuthService.java b/src/main/java/org/scribe/oauth/OAuthService.java
index 0c9c57e9b..f219d8b00 100644
--- a/src/main/java/org/scribe/oauth/OAuthService.java
+++ b/src/main/java/org/scribe/oauth/OAuthService.java
@@ -1,6 +1,10 @@
package org.scribe.oauth;
-import org.scribe.model.*;
+import java.io.IOException;
+
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.Token;
+import org.scribe.model.Verifier;
/**
* The main Scribe object.
@@ -9,45 +13,55 @@
*
* @author Pablo Fernandez
*/
-public interface OAuthService
-{
- /**
- * Retrieve the request token.
- *
- * @return request token
- */
- public Token getRequestToken();
-
- /**
- * Retrieve the access token
- *
- * @param requestToken request token (obtained previously)
- * @param verifier verifier code
- * @return access token
- */
- public Token getAccessToken(Token requestToken, Verifier verifier);
-
- /**
- * Signs am OAuth request
- *
- * @param accessToken access token (obtained previously)
- * @param request request to sign
- */
- public void signRequest(Token accessToken, OAuthRequest request);
-
- /**
- * Returns the OAuth version of the service.
- *
- * @return oauth version as string
- */
- public String getVersion();
-
- /**
- * Returns the URL where you should redirect your users to authenticate
- * your application.
- *
- * @param requestToken the request token you need to authorize
- * @return the URL where you should redirect your users
- */
- public String getAuthorizationUrl(Token requestToken);
+public interface OAuthService {
+ /**
+ * Retrieve the request token.
+ *
+ * @return request token
+ * @throws IOException
+ */
+ public Token getRequestToken() throws IOException;
+
+ /**
+ * Retrieve the access token
+ *
+ * @param requestToken request token (obtained previously)
+ * @param verifier verifier code
+ * @return access token
+ * @throws IOException
+ */
+ public Token getAccessToken(Token requestToken, Verifier verifier) throws IOException;
+
+ /**
+ * Retrieve the access token
+ *
+ * @param requestToken request token (obtained previously)
+ * @return access token
+ * @throws IOException
+ */
+ public Token getAccessToken(Token requestToken) throws IOException;
+
+ /**
+ * Signs am OAuth request
+ *
+ * @param accessToken access token (obtained previously)
+ * @param request request to sign
+ */
+ public void signRequest(Token accessToken, OAuthRequest request);
+
+ /**
+ * Returns the OAuth version of the service.
+ *
+ * @return oauth version as string
+ */
+ public String getVersion();
+
+ /**
+ * Returns the URL where you should redirect your users to authenticate
+ * your application.
+ *
+ * @param requestToken the request token you need to authorize
+ * @return the URL where you should redirect your users
+ */
+ public String getAuthorizationUrl(Token requestToken);
}
diff --git a/src/main/java/org/scribe/services/CommonsEncoder.java b/src/main/java/org/scribe/services/CommonsEncoder.java
index 4269a69cc..926d966bd 100644
--- a/src/main/java/org/scribe/services/CommonsEncoder.java
+++ b/src/main/java/org/scribe/services/CommonsEncoder.java
@@ -8,7 +8,7 @@
public class CommonsEncoder extends Base64Encoder
{
- @Override
+
public String encode(byte[] bytes)
{
try
@@ -21,7 +21,7 @@ public String encode(byte[] bytes)
}
}
- @Override
+
public String getType()
{
return "CommonsCodec";
diff --git a/src/main/java/org/scribe/services/DatatypeConverterEncoder.java b/src/main/java/org/scribe/services/DatatypeConverterEncoder.java
index d147eba50..b99e4a6db 100644
--- a/src/main/java/org/scribe/services/DatatypeConverterEncoder.java
+++ b/src/main/java/org/scribe/services/DatatypeConverterEncoder.java
@@ -1,18 +1,14 @@
package org.scribe.services;
-import javax.xml.bind.*;
+import org.apache.commons.codec.binary.Base64;
-public class DatatypeConverterEncoder extends Base64Encoder
-{
- @Override
- public String encode(byte[] bytes)
- {
- return DatatypeConverter.printBase64Binary(bytes);
- }
+public class DatatypeConverterEncoder extends Base64Encoder {
- @Override
- public String getType()
- {
- return "DatatypeConverter";
- }
+ public String encode(final byte[] bytes) {
+ return String.valueOf(Base64.encodeBase64(bytes));
+ }
+
+ public String getType() {
+ return "DatatypeConverter";
+ }
}
diff --git a/src/main/java/org/scribe/services/HMACSha1SignatureService.java b/src/main/java/org/scribe/services/HMACSha1SignatureService.java
index 560c2e676..bca26ed44 100644
--- a/src/main/java/org/scribe/services/HMACSha1SignatureService.java
+++ b/src/main/java/org/scribe/services/HMACSha1SignatureService.java
@@ -1,10 +1,12 @@
package org.scribe.services;
-import javax.crypto.*;
-import javax.crypto.spec.*;
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
-import org.scribe.exceptions.*;
-import org.scribe.utils.*;
+import org.apache.commons.lang.StringUtils;
+import org.scribe.exceptions.OAuthSignatureException;
+import org.scribe.utils.OAuthEncoder;
+import org.scribe.utils.Preconditions;
/**
* HMAC-SHA1 implementation of {@SignatureService}
@@ -12,50 +14,44 @@
* @author Pablo Fernandez
*
*/
-public class HMACSha1SignatureService implements SignatureService
-{
- private static final String EMPTY_STRING = "";
- private static final String CARRIAGE_RETURN = "\r\n";
- private static final String UTF8 = "UTF-8";
- private static final String HMAC_SHA1 = "HmacSHA1";
- private static final String METHOD = "HMAC-SHA1";
+public class HMACSha1SignatureService implements SignatureService {
+ private static final String EMPTY_STRING = "";
+ private static final String CARRIAGE_RETURN = "\r\n";
+ private static final String UTF8 = "UTF-8";
+ private static final String HMAC_SHA1 = "HmacSHA1";
+ private static final String METHOD = "HMAC-SHA1";
- /**
- * {@inheritDoc}
- */
- public String getSignature(String baseString, String apiSecret, String tokenSecret)
- {
- try
- {
- Preconditions.checkEmptyString(baseString, "Base string cant be null or empty string");
- Preconditions.checkEmptyString(apiSecret, "Api secret cant be null or empty string");
- return doSign(baseString, OAuthEncoder.encode(apiSecret) + '&' + OAuthEncoder.encode(tokenSecret));
- }
- catch (Exception e)
- {
- throw new OAuthSignatureException(baseString, e);
+ /**
+ * {@inheritDoc}
+ */
+ public String getSignature(final String baseString, final String apiSecret,
+ final String tokenSecret) {
+ try {
+ Preconditions.checkEmptyString(baseString, "Base string cant be null or empty string");
+ Preconditions.checkEmptyString(apiSecret, "Api secret cant be null or empty string");
+ return doSign(baseString,
+ OAuthEncoder.encode(apiSecret) + '&' + OAuthEncoder.encode(tokenSecret));
+ } catch (final Exception e) {
+ throw new OAuthSignatureException(baseString, e);
+ }
}
- }
- private String doSign(String toSign, String keyString) throws Exception
- {
- SecretKeySpec key = new SecretKeySpec((keyString).getBytes(UTF8), HMAC_SHA1);
- Mac mac = Mac.getInstance(HMAC_SHA1);
- mac.init(key);
- byte[] bytes = mac.doFinal(toSign.getBytes(UTF8));
- return bytesToBase64String(bytes).replace(CARRIAGE_RETURN, EMPTY_STRING);
- }
+ private String doSign(final String toSign, final String keyString) throws Exception {
+ final SecretKeySpec key = new SecretKeySpec((keyString).getBytes(UTF8), HMAC_SHA1);
+ final Mac mac = Mac.getInstance(HMAC_SHA1);
+ mac.init(key);
+ final byte[] bytes = mac.doFinal(toSign.getBytes(UTF8));
+ return StringUtils.replace(bytesToBase64String(bytes), CARRIAGE_RETURN, EMPTY_STRING);
+ }
- private String bytesToBase64String(byte[] bytes)
- {
- return Base64Encoder.getInstance().encode(bytes);
- }
+ private String bytesToBase64String(final byte[] bytes) {
+ return Base64Encoder.getInstance().encode(bytes);
+ }
- /**
- * {@inheritDoc}
- */
- public String getSignatureMethod()
- {
- return METHOD;
- }
+ /**
+ * {@inheritDoc}
+ */
+ public String getSignatureMethod() {
+ return METHOD;
+ }
}
diff --git a/src/main/java/org/scribe/services/TimestampService.java b/src/main/java/org/scribe/services/TimestampService.java
index 221a226b4..40f7b4dda 100644
--- a/src/main/java/org/scribe/services/TimestampService.java
+++ b/src/main/java/org/scribe/services/TimestampService.java
@@ -17,7 +17,7 @@ public interface TimestampService
public String getTimestampInSeconds();
/**
- * Returns a nonce (unique value for each request)
+ * Returns a nonce (unique name for each request)
*
* @return nonce
*/
diff --git a/src/main/java/org/scribe/services/TimestampServiceImpl.java b/src/main/java/org/scribe/services/TimestampServiceImpl.java
index 486e93c64..733c0d5f4 100644
--- a/src/main/java/org/scribe/services/TimestampServiceImpl.java
+++ b/src/main/java/org/scribe/services/TimestampServiceImpl.java
@@ -1,68 +1,60 @@
package org.scribe.services;
-import java.util.*;
+import java.util.Random;
/**
* Implementation of {@link TimestampService} using plain java classes.
*
* @author Pablo Fernandez
*/
-public class TimestampServiceImpl implements TimestampService
-{
- private Timer timer;
-
- /**
- * Default constructor.
- */
- public TimestampServiceImpl()
- {
- timer = new Timer();
- }
-
- /**
- * {@inheritDoc}
- */
- public String getNonce()
- {
- Long ts = getTs();
- return String.valueOf(ts + timer.getRandomInteger());
- }
+public class TimestampServiceImpl implements TimestampService {
+ private Timer timer;
+
+ /**
+ * Default constructor.
+ */
+ public TimestampServiceImpl() {
+ timer = new Timer();
+ }
- /**
- * {@inheritDoc}
- */
- public String getTimestampInSeconds()
- {
- return String.valueOf(getTs());
- }
+ /**
+ * {@inheritDoc}
+ */
+ public String getNonce() {
+ final long ts = getTs();
+ return String.valueOf(ts + timer.getRandomInteger());
+ }
- private Long getTs()
- {
- return timer.getMilis() / 1000;
- }
+ /**
+ * {@inheritDoc}
+ */
+ public String getTimestampInSeconds() {
+ return String.valueOf(getTs());
+ }
- void setTimer(Timer timer)
- {
- this.timer = timer;
- }
+ private long getTs() {
+ return timer.getMilis() / 1000;
+ }
- /**
- * Inner class that uses {@link System} for generating the timestamps.
- *
- * @author Pablo Fernandez
- */
- static class Timer
- {
- private final Random rand = new Random();
- Long getMilis()
- {
- return System.currentTimeMillis();
+ void setTimer(final Timer timer) {
+ this.timer = timer;
}
- Integer getRandomInteger()
- {
- return rand.nextInt();
+ /**
+ * Inner class that uses {@link System} for generating the timestamps.
+ *
+ * @author Pablo Fernandez
+ */
+ static class Timer {
+ private final Random rand = new Random();
+
+ long getMilis() {
+ return System.currentTimeMillis();
+ }
+
+ int getRandomInteger() {
+ return rand.nextInt();
+ }
}
- }
}
diff --git a/src/main/java/org/scribe/utils/MapUtils.java b/src/main/java/org/scribe/utils/MapUtils.java
index ee09d16b3..16941a4e9 100644
--- a/src/main/java/org/scribe/utils/MapUtils.java
+++ b/src/main/java/org/scribe/utils/MapUtils.java
@@ -1,24 +1,32 @@
package org.scribe.utils;
+import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
/**
* @author: Pablo Fernandez
*/
-public class MapUtils
-{
- private MapUtils(){}
+public class MapUtils {
+ private MapUtils() {
+ }
+
+ public static/**/String toString(final Map/**/map) {
+ if (map == null) {
+ return "";
+ }
+ if (map.isEmpty()) {
+ return "{}";
+ }
- public static String toString(Map map)
- {
- if (map == null) return "";
- if (map.isEmpty()) return "{}";
+ final StringBuilder result = new StringBuilder();
- StringBuilder result = new StringBuilder();
- for(Map.Entry entry : map.entrySet())
- {
- result.append(String.format(", %s -> %s ", entry.getKey().toString(), entry.getValue().toString()));
+ final Iterator i = map.entrySet().iterator();
+ while (i.hasNext()) {
+ final Map.Entry/**/entry = (Entry) i.next();
+ result.append(", " + String.valueOf(entry.getKey()) + " -> "
+ + String.valueOf(entry.getValue()) + " ");
+ }
+ return "{" + result.substring(1) + "}";
}
- return "{" + result.substring(1) + "}";
- }
}
diff --git a/src/main/java/org/scribe/utils/OAuthEncoder.java b/src/main/java/org/scribe/utils/OAuthEncoder.java
index 7fdbc84cc..d4355cfa1 100644
--- a/src/main/java/org/scribe/utils/OAuthEncoder.java
+++ b/src/main/java/org/scribe/utils/OAuthEncoder.java
@@ -1,64 +1,61 @@
package org.scribe.utils;
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import java.util.regex.*;
-import org.scribe.exceptions.*;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.scribe.exceptions.OAuthException;
/**
* @author: Pablo Fernandez
*/
-public class OAuthEncoder
-{
- private static String CHARSET = "UTF-8";
- private static final Map ENCODING_RULES;
-
- static
- {
- Map rules = new HashMap();
- rules.put("*", "%2A");
- rules.put("+", "%20");
- rules.put("%7E", "~");
- ENCODING_RULES = Collections.unmodifiableMap(rules);
- }
+public class OAuthEncoder {
+ private static String CHARSET = "UTF-8";
+ private static final Map/**/ENCODING_RULES;
- private OAuthEncoder(){}
-
- public static String encode(String plain)
- {
- Preconditions.checkNotNull(plain, "Cannot encode null object");
- String encoded = "";
- try
- {
- encoded = URLEncoder.encode(plain, CHARSET);
- }
- catch (UnsupportedEncodingException uee)
- {
- throw new OAuthException("Charset not found while encoding string: " + CHARSET, uee);
+ static {
+ final Map/**/rules = new HashMap/**/();
+ rules.put("*", "%2A");
+ rules.put("+", "%20");
+ rules.put("%7E", "~");
+ ENCODING_RULES = Collections.unmodifiableMap(rules);
}
- for(Map.Entry rule : ENCODING_RULES.entrySet())
- {
- encoded = applyRule(encoded, rule.getKey(), rule.getValue());
+
+ private OAuthEncoder() {
}
- return encoded;
- }
- private static String applyRule(String encoded, String toReplace, String replacement)
- {
- return encoded.replaceAll(Pattern.quote(toReplace), replacement);
- }
+ public static String encode(final String plain) {
+ Preconditions.checkNotNull(plain, "Cannot encode null object");
+ String encoded = "";
+ try {
+ encoded = URLEncoder.encode(plain, CHARSET);
+ } catch (final UnsupportedEncodingException uee) {
+ throw new OAuthException("Charset not found while encoding string: " + CHARSET, uee);
+ }
+ final Iterator i = ENCODING_RULES.entrySet().iterator();
+ while (i.hasNext()) {
+ final Map.Entry/**/rule = (Map.Entry) i.next();
+ encoded = applyRule(encoded, (String) rule.getKey(), (String) rule.getValue());
+ }
+ return encoded;
+ }
- public static String decode(String encoded)
- {
- Preconditions.checkNotNull(encoded, "Cannot decode null object");
- try
- {
- return URLDecoder.decode(encoded, CHARSET);
+ private static String applyRule(final String encoded, final String toReplace,
+ final String replacement) {
+ return StringUtils.replace(encoded, toReplace, replacement);
}
- catch(UnsupportedEncodingException uee)
- {
- throw new OAuthException("Charset not found while decoding string: " + CHARSET, uee);
+
+ public static String decode(final String encoded) {
+ Preconditions.checkNotNull(encoded, "Cannot decode null object");
+ try {
+ return URLDecoder.decode(encoded, CHARSET);
+ } catch (final UnsupportedEncodingException uee) {
+ throw new OAuthException("Charset not found while decoding string: " + CHARSET, uee);
+ }
}
- }
}
diff --git a/src/main/java/org/scribe/utils/Preconditions.java b/src/main/java/org/scribe/utils/Preconditions.java
index d4dd1be8c..87ff9096c 100644
--- a/src/main/java/org/scribe/utils/Preconditions.java
+++ b/src/main/java/org/scribe/utils/Preconditions.java
@@ -1,7 +1,6 @@
package org.scribe.utils;
-import java.util.regex.Pattern;
-
+import org.apache.regexp.REUtil;
import org.scribe.model.OAuthConstants;
/**
@@ -9,80 +8,73 @@
*
* @author Pablo Fernandez
*/
-public class Preconditions
-{
- private static final String DEFAULT_MESSAGE = "Received an invalid parameter";
-
- // scheme = alpha *( alpha | digit | "+" | "-" | "." )
- private static final Pattern URL_PATTERN = Pattern.compile("^[a-zA-Z][a-zA-Z0-9+.-]*://\\S+");
+public class Preconditions {
+ private static final String DEFAULT_MESSAGE = "Received an invalid parameter";
+
+ // scheme = alpha *( alpha | digit | "+" | "-" | "." )
+ private static final String URL_PATTERN = "^[a-zA-Z][a-zA-Z0-9+.-]*://\\S+";
- private Preconditions(){}
+ private Preconditions() {
+ }
- /**
- * Checks that an object is not null.
- *
- * @param object any object
- * @param errorMsg error message
- *
- * @throws IllegalArgumentException if the object is null
- */
- public static void checkNotNull(Object object, String errorMsg)
- {
- check(object != null, errorMsg);
- }
+ /**
+ * Checks that an object is not null.
+ *
+ * @param object any object
+ * @param errorMsg error message
+ *
+ * @throws IllegalArgumentException if the object is null
+ */
+ public static void checkNotNull(final Object object, final String errorMsg) {
+ check(object != null, errorMsg);
+ }
- /**
- * Checks that a string is not null or empty
- *
- * @param string any string
- * @param errorMsg error message
- *
- * @throws IllegalArgumentException if the string is null or empty
- */
- public static void checkEmptyString(String string, String errorMsg)
- {
- check(string != null && !string.trim().equals(""), errorMsg);
- }
+ /**
+ * Checks that a string is not null or empty
+ *
+ * @param string any string
+ * @param errorMsg error message
+ *
+ * @throws IllegalArgumentException if the string is null or empty
+ */
+ public static void checkEmptyString(final String string, final String errorMsg) {
+ check(string != null && !string.trim().equals(""), errorMsg);
+ }
- /**
- * Checks that a URL is valid
- *
- * @param url any string
- * @param errorMsg error message
- */
- public static void checkValidUrl(String url, String errorMsg)
- {
- checkEmptyString(url, errorMsg);
- check(isUrl(url), errorMsg);
- }
-
- /**
- * Checks that a URL is a valid OAuth callback
- *
- * @param url any string
- * @param errorMsg error message
- */
- public static void checkValidOAuthCallback(String url, String errorMsg)
- {
- checkEmptyString(url, errorMsg);
- if(url.toLowerCase().compareToIgnoreCase(OAuthConstants.OUT_OF_BAND) != 0)
- {
- check(isUrl(url), errorMsg);
+ /**
+ * Checks that a URL is valid
+ *
+ * @param url any string
+ * @param errorMsg error message
+ */
+ public static void checkValidUrl(final String url, final String errorMsg) {
+ checkEmptyString(url, errorMsg);
+ check(isUrl(url), errorMsg);
}
- }
-
- private static boolean isUrl(String url)
- {
- return URL_PATTERN.matcher(url).matches();
- }
-
- private static void check(boolean requirements, String error)
- {
- String message = (error == null || error.trim().length() <= 0) ? DEFAULT_MESSAGE : error;
- if (!requirements)
- {
- throw new IllegalArgumentException(message);
+
+ /**
+ * Checks that a URL is a valid OAuth callback
+ *
+ * @param url any string
+ * @param errorMsg error message
+ */
+ public static void checkValidOAuthCallback(final String url, final String errorMsg) {
+ checkEmptyString(url, errorMsg);
+ if (url.toLowerCase().compareToIgnoreCase(OAuthConstants.OUT_OF_BAND) != 0) {
+ check(isUrl(url), errorMsg);
+ }
}
- }
-
+
+ private static boolean isUrl(final String url) {
+ return REUtil.createRE(URL_PATTERN).match(url);
+ }
+
+ private static void check(final boolean requirements, final String error) {
+ final String message = (error == null || error.trim().length() <= 0) ? DEFAULT_MESSAGE
+ : error;
+ if (!requirements) {
+ throw new IllegalArgumentException(message);
+ }
+ }
+
}
diff --git a/src/main/java/org/scribe/utils/StreamUtils.java b/src/main/java/org/scribe/utils/StreamUtils.java
index 30dd8bc54..b6da47ff8 100644
--- a/src/main/java/org/scribe/utils/StreamUtils.java
+++ b/src/main/java/org/scribe/utils/StreamUtils.java
@@ -1,44 +1,43 @@
package org.scribe.utils;
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
/**
* Utils to deal with Streams.
*
* @author Pablo Fernandez
*/
-public class StreamUtils
-{
- private StreamUtils(){}
+public class StreamUtils {
+ private StreamUtils() {
+ }
- /**
- * Returns the stream contents as an UTF-8 encoded string
- *
- * @param is input stream
- * @return string contents
- */
- public static String getStreamContents(InputStream is)
- {
- Preconditions.checkNotNull(is, "Cannot get String from a null object");
- try
- {
- final char[] buffer = new char[0x10000];
- StringBuilder out = new StringBuilder();
- Reader in = new InputStreamReader(is, "UTF-8");
- int read;
- do
- {
- read = in.read(buffer, 0, buffer.length);
- if (read > 0)
- {
- out.append(buffer, 0, read);
+ /**
+ * Returns the stream contents as an UTF-8 encoded string
+ *
+ * @param is input stream
+ * @return string contents
+ */
+ public static String getStreamContents(final InputStream is) {
+ Preconditions.checkNotNull(is, "Cannot get String from a null object");
+ try {
+ final char[] buffer = new char[0x10000];
+ final StringBuilder out = new StringBuilder();
+ final Reader in = new InputStreamReader(is, "UTF-8");
+ int read;
+ do {
+ read = in.read(buffer, 0, buffer.length);
+ if (read > 0) {
+ out.append(buffer, 0, read);
+ }
+ } while (read >= 0);
+ in.close();
+ return out.toString();
+ } catch (final IOException ioe) {
+ ioe.printStackTrace();
+ throw new IllegalStateException("Error while reading response body");
}
- } while (read >= 0);
- in.close();
- return out.toString();
- } catch (IOException ioe)
- {
- throw new IllegalStateException("Error while reading response body", ioe);
}
- }
}
diff --git a/src/test/java/org/scribe/builder/ServiceBuilderTest.java b/src/test/java/org/scribe/builder/ServiceBuilderTest.java
index 8112d79b3..94323848d 100644
--- a/src/test/java/org/scribe/builder/ServiceBuilderTest.java
+++ b/src/test/java/org/scribe/builder/ServiceBuilderTest.java
@@ -1,73 +1,70 @@
-package org.scribe.builder;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class ServiceBuilderTest
-{
- private ServiceBuilder builder;
-
- @Before
- public void setup()
- {
- builder = new ServiceBuilder();
- }
-
- @Test
- public void shouldReturnConfigDefaultValues()
- {
- builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").build();
- assertEquals(ApiMock.config.getApiKey(), "key");
- assertEquals(ApiMock.config.getApiSecret(), "secret");
- assertEquals(ApiMock.config.getCallback(), OAuthConstants.OUT_OF_BAND);
- assertEquals(ApiMock.config.getSignatureType(), SignatureType.Header);
- }
-
- @Test
- public void shouldAcceptValidCallbackUrl()
- {
- builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").callback("http://example.com").build();
- assertEquals(ApiMock.config.getApiKey(), "key");
- assertEquals(ApiMock.config.getApiSecret(), "secret");
- assertEquals(ApiMock.config.getCallback(), "http://example.com");
- }
-
- @Test
- public void shouldAcceptASignatureType()
- {
- builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").signatureType(SignatureType.QueryString).build();
- assertEquals(ApiMock.config.getApiKey(), "key");
- assertEquals(ApiMock.config.getApiSecret(), "secret");
- assertEquals(ApiMock.config.getSignatureType(), SignatureType.QueryString);
- }
-
- @Test(expected=IllegalArgumentException.class)
- public void shouldNotAcceptNullAsCallback()
- {
- builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").callback(null).build();
- }
-
- @Test
- public void shouldAcceptAnScope()
- {
- builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").scope("rss-api").build();
- assertEquals(ApiMock.config.getApiKey(), "key");
- assertEquals(ApiMock.config.getApiSecret(), "secret");
- assertEquals(ApiMock.config.getScope(), "rss-api");
- }
-
- public static class ApiMock implements Api
- {
- public static OAuthConfig config;
-
- public OAuthService createService(OAuthConfig config)
- {
- ApiMock.config = config;
- return null;
- }
- }
-}
+package org.scribe.builder;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.scribe.builder.ServiceBuilder;
+import org.scribe.builder.api.Api;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.OAuthConstants;
+import org.scribe.model.SignatureType;
+import org.scribe.oauth.OAuthService;
+
+public class ServiceBuilderTest {
+ private ServiceBuilder builder;
+
+ @Before
+ public void setup() {
+ builder = new ServiceBuilder();
+ }
+
+ @Test
+ public void shouldReturnConfigDefaultValues() {
+ builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").build();
+ assertEquals(ApiMock.config.getApiKey(), "key");
+ assertEquals(ApiMock.config.getApiSecret(), "secret");
+ assertEquals(ApiMock.config.getCallback(), OAuthConstants.OUT_OF_BAND);
+ assertEquals(ApiMock.config.getSignatureType(), SignatureType.Header);
+ }
+
+ @Test
+ public void shouldAcceptValidCallbackUrl() {
+ builder.provider(ApiMock.class).apiKey("key").apiSecret("secret")
+ .callback("http://example.com").build();
+ assertEquals(ApiMock.config.getApiKey(), "key");
+ assertEquals(ApiMock.config.getApiSecret(), "secret");
+ assertEquals(ApiMock.config.getCallback(), "http://example.com");
+ }
+
+ @Test
+ public void shouldAcceptASignatureType() {
+ builder.provider(ApiMock.class).apiKey("key").apiSecret("secret")
+ .signatureType(SignatureType.QueryString).build();
+ assertEquals(ApiMock.config.getApiKey(), "key");
+ assertEquals(ApiMock.config.getApiSecret(), "secret");
+ assertEquals(ApiMock.config.getSignatureType(), SignatureType.QueryString);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void shouldNotAcceptNullAsCallback() {
+ builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").callback(null).build();
+ }
+
+ @Test
+ public void shouldAcceptAnScope() {
+ builder.provider(ApiMock.class).apiKey("key").apiSecret("secret").scope("rss-api").build();
+ assertEquals(ApiMock.config.getApiKey(), "key");
+ assertEquals(ApiMock.config.getApiSecret(), "secret");
+ assertEquals(ApiMock.config.getScope(), "rss-api");
+ }
+
+ public static class ApiMock implements Api {
+ public static OAuthConfig config;
+
+ public OAuthService createService(final OAuthConfig config) {
+ ApiMock.config = config;
+ return null;
+ }
+ }
+}
diff --git a/src/test/java/org/scribe/examples/AWeberExample.java b/src/test/java/org/scribe/examples/AWeberExample.java
deleted file mode 100644
index 2d86d6130..000000000
--- a/src/test/java/org/scribe/examples/AWeberExample.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class AWeberExample
-{
-
- //To get your consumer key/secret, and view API docs, see https://labs.aweber.com/docs
- private static final String ACCOUNT_RESOURCE_URL = "https://api.aweber.com/1.0/accounts/";
-
- private static final String CONSUMER_KEY = "";
- private static final String CONSUMER_SECRET = "";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(AWeberApi.class)
- .apiKey(CONSUMER_KEY)
- .apiSecret(CONSUMER_SECRET)
- .build();
-
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== AWeber'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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, ACCOUNT_RESOURCE_URL);
- 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.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with AWeber and Scribe! :)");
- }
-
-}
\ No newline at end of file
diff --git a/src/test/java/org/scribe/examples/DiggExample.java b/src/test/java/org/scribe/examples/DiggExample.java
deleted file mode 100644
index 63fea8b6a..000000000
--- a/src/test/java/org/scribe/examples/DiggExample.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-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
diff --git a/src/test/java/org/scribe/examples/FacebookExample.java b/src/test/java/org/scribe/examples/FacebookExample.java
deleted file mode 100644
index d5dc3cb50..000000000
--- a/src/test/java/org/scribe/examples/FacebookExample.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class FacebookExample
-{
- private static final String NETWORK_NAME = "Facebook";
- private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/me";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your_app_id";
- String apiSecret = "your_api_secret";
- OAuthService service = new ServiceBuilder()
- .provider(FacebookApi.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .callback("http://www.example.com/oauth_callback/")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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(EMPTY_TOKEN, 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);
- 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
diff --git a/src/test/java/org/scribe/examples/FlickrExample.java b/src/test/java/org/scribe/examples/FlickrExample.java
deleted file mode 100644
index ac38ad32f..000000000
--- a/src/test/java/org/scribe/examples/FlickrExample.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.scribe.examples;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-import java.util.*;
-
-public class FlickrExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.flickr.com/services/rest/";
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your_app_id";
- String apiSecret = "your_api_secret";
- OAuthService service = new ServiceBuilder().provider(FlickrApi.class).apiKey(apiKey).apiSecret(apiSecret).build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Flickr'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();
-
- System.out.println("Now go and authorize Scribe here:");
- String authorizationUrl = service.getAuthorizationUrl(requestToken);
- System.out.println(authorizationUrl + "&perms=read");
- 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);
- request.addQuerystringParameter("method", "flickr.test.login");
- 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.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-}
diff --git a/src/test/java/org/scribe/examples/Foursquare2Example.java b/src/test/java/org/scribe/examples/Foursquare2Example.java
deleted file mode 100644
index 35495a895..000000000
--- a/src/test/java/org/scribe/examples/Foursquare2Example.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class Foursquare2Example
-{
- private static final String PROTECTED_RESOURCE_URL = "https://api.foursquare.com/v2/users/self/friends?oauth_token=";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "FEGFXJUFANVVDHVSNUAMUKTTXCP1AJQD53E33XKJ44YP1S4I";
- String apiSecret = "AYWKUL5SWPNC0CTQ202QXRUG2NLZYXMRA34ZSDW4AUYBG2RC";
- OAuthService service = new ServiceBuilder()
- .provider(Foursquare2Api.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .callback("http://localhost:9000/")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Foursquare2's OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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(EMPTY_TOKEN, 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 + accessToken.getToken());
- 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! :)");
-
- }
-}
diff --git a/src/test/java/org/scribe/examples/FoursquareExample.java b/src/test/java/org/scribe/examples/FoursquareExample.java
deleted file mode 100644
index b227488c7..000000000
--- a/src/test/java/org/scribe/examples/FoursquareExample.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class FoursquareExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.foursquare.com/v1/user";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(FoursquareApi.class)
- .apiKey("FEGFXJUFANVVDHVSNUAMUKTTXCP1AJQD53E33XKJ44YP1S4I")
- .apiSecret("AYWKUL5SWPNC0CTQ202QXRUG2NLZYXMRA34ZSDW4AUYBG2RC")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Foursquare'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- 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
diff --git a/src/test/java/org/scribe/examples/FreelancerExample.java b/src/test/java/org/scribe/examples/FreelancerExample.java
deleted file mode 100644
index d1d540723..000000000
--- a/src/test/java/org/scribe/examples/FreelancerExample.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.scribe.examples;
-
-import java.util.*;
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-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.Sandbox.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! :)");
- }
-}
diff --git a/src/test/java/org/scribe/examples/GoogleExample.java b/src/test/java/org/scribe/examples/GoogleExample.java
deleted file mode 100644
index fef1b43c9..000000000
--- a/src/test/java/org/scribe/examples/GoogleExample.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class GoogleExample
-{
- private static final String NETWORK_NAME = "Google";
- private static final String AUTHORIZE_URL = "https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=";
- private static final String PROTECTED_RESOURCE_URL = "https://docs.google.com/feeds/default/private/full/";
- private static final String SCOPE = "https://docs.google.com/feeds/";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(GoogleApi.class)
- .apiKey("anonymous")
- .apiSecret("anonymous")
- .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! :)");
-
- }
-}
\ No newline at end of file
diff --git a/src/test/java/org/scribe/examples/ImgUrExample.java b/src/test/java/org/scribe/examples/ImgUrExample.java
deleted file mode 100644
index 93fe91cb7..000000000
--- a/src/test/java/org/scribe/examples/ImgUrExample.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.scribe.examples;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-import java.util.*;
-
-public class ImgUrExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.imgur.com/2/account.json";
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret (you'll need an read/write api key)
- String apiKey = "your_app_id";
- String apiSecret = "your_api_secret";
- OAuthService service = new ServiceBuilder().provider(ImgUrApi.class).apiKey(apiKey).apiSecret(apiSecret).build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== ImgUr'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();
-
- System.out.println("Now go and authorize Scribe here:");
- String authorizationUrl = service.getAuthorizationUrl(requestToken);
- System.out.println(authorizationUrl);
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-}
diff --git a/src/test/java/org/scribe/examples/Kaixin20Example.java b/src/test/java/org/scribe/examples/Kaixin20Example.java
deleted file mode 100644
index b3e9d66ba..000000000
--- a/src/test/java/org/scribe/examples/Kaixin20Example.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.scribe.examples;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-import java.util.*;
-
-public class Kaixin20Example
-{
- private static final String NETWORK_NAME = "Kaixin";
- private static final String PROTECTED_RESOURCE_URL = "https://api.kaixin001.com/users/me.json";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "your api key";
- String apiSecret = "your api secret";
- OAuthService service = new ServiceBuilder()
- .provider(KaixinApi20.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .callback("http://your.domain.com/handle")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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 Verifier for the Access Token
- System.out.println("Trading the Request Token for an Access Token...");
- Token accessToken = service.getAccessToken(EMPTY_TOKEN, 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);
- 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! :)");
-
- }
-}
diff --git a/src/test/java/org/scribe/examples/LinkedInExample.java b/src/test/java/org/scribe/examples/LinkedInExample.java
deleted file mode 100644
index 703cc8275..000000000
--- a/src/test/java/org/scribe/examples/LinkedInExample.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class LinkedInExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~/connections:(id,last-name)";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(LinkedInApi.class)
- .apiKey("CiEgwWDkA5BFpNrc0RfGyVuSlOh4tig5kOTZ9q97qcXNrFl7zqk-Ts7DqRGaKDCV")
- .apiSecret("dhho4dfoCmiQXrkw4yslork5XWLFnPSuMR-8gscPVjY4jqFFHPYWJKgpFl4uLTM6")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== LinkedIn'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-
-}
diff --git a/src/test/java/org/scribe/examples/LinkedInExampleWithScopes.java b/src/test/java/org/scribe/examples/LinkedInExampleWithScopes.java
deleted file mode 100644
index b8e8b2881..000000000
--- a/src/test/java/org/scribe/examples/LinkedInExampleWithScopes.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class LinkedInExampleWithScopes
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~/connections:(id,last-name)";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(LinkedInApi.withScopes("foo", "bar", "baz"))
- .apiKey("CiEgwWDkA5BFpNrc0RfGyVuSlOh4tig5kOTZ9q97qcXNrFl7zqk-Ts7DqRGaKDCV")
- .apiSecret("dhho4dfoCmiQXrkw4yslork5XWLFnPSuMR-8gscPVjY4jqFFHPYWJKgpFl4uLTM6")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== LinkedIn'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();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- 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);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-
-}
diff --git a/src/test/java/org/scribe/examples/LiveExample.java b/src/test/java/org/scribe/examples/LiveExample.java
deleted file mode 100644
index ade5a6ba9..000000000
--- a/src/test/java/org/scribe/examples/LiveExample.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class LiveExample
-{
- private static final String PROTECTED_RESOURCE_URL = "https://api.foursquare.com/v2/users/self/friends?oauth_token=";
- private static final Token EMPTY_TOKEN = null;
-
- public static void main(String[] args)
- {
- // Replace these with your own api key and secret
- String apiKey = "";
- String apiSecret = "";
- OAuthService service = new ServiceBuilder()
- .provider(LiveApi.class)
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .scope("wl.basic")
- .callback("http://localhost:9000/")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Windows Live's OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Authorization URL
- System.out.println("Fetching the Authorization URL...");
- String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
- 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(EMPTY_TOKEN, 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 + accessToken.getToken());
- 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! :)");
-
- }
-}
diff --git a/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java b/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java
index edc101d15..e209a7bbf 100644
--- a/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java
+++ b/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java
@@ -1,52 +1,51 @@
-package org.scribe.extractors;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.test.helpers.*;
-
-public class BaseStringExtractorTest
-{
-
- private BaseStringExtractorImpl extractor;
- private OAuthRequest request;
-
- @Before
- public void setup()
- {
- request = ObjectMother.createSampleOAuthRequest();
- extractor = new BaseStringExtractorImpl();
- }
-
- @Test
- public void shouldExtractBaseStringFromOAuthRequest()
- {
- String expected = "GET&http%3A%2F%2Fexample.com&oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature%26oauth_timestamp%3D123456";
- String baseString = extractor.extract(request);
- assertEquals(expected, baseString);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowExceptionIfRquestIsNull()
- {
- OAuthRequest nullRequest = null;
- extractor.extract(nullRequest);
- }
-
- @Test(expected = OAuthParametersMissingException.class)
- public void shouldThrowExceptionIfRquestHasNoOAuthParameters()
- {
- OAuthRequest request = new OAuthRequest(Verb.GET, "http://example.com");
- extractor.extract(request);
- }
-
- @Test
- public void shouldProperlyEncodeSpaces()
- {
- String expected = "GET&http%3A%2F%2Fexample.com&body%3Dthis%2520param%2520has%2520whitespace%26oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature%26oauth_timestamp%3D123456";
- request.addBodyParameter("body", "this param has whitespace");
- assertEquals(expected, extractor.extract(request));
- }
-}
+package org.scribe.extractors;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.scribe.exceptions.OAuthParametersMissingException;
+import org.scribe.extractors.BaseStringExtractorImpl;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.RequestHttpImpl;
+import org.scribe.model.Verb;
+import org.scribe.test.helpers.ObjectMother;
+
+public class BaseStringExtractorTest {
+
+ private BaseStringExtractorImpl extractor;
+ private OAuthRequest request;
+
+ @Before
+ public void setup() {
+ request = ObjectMother.createSampleOAuthRequest();
+ extractor = new BaseStringExtractorImpl();
+ }
+
+ @Test
+ public void shouldExtractBaseStringFromOAuthRequest() {
+ final String expected = "GET&http%3A%2F%2Fexample.com&oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature%26oauth_timestamp%3D123456";
+ final String baseString = extractor.extract(request);
+ assertEquals(expected, baseString);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void shouldThrowExceptionIfRquestIsNull() {
+ final OAuthRequest nullRequest = null;
+ extractor.extract(nullRequest);
+ }
+
+ @Test(expected = OAuthParametersMissingException.class)
+ public void shouldThrowExceptionIfRquestHasNoOAuthParameters() {
+ final RequestHttpImpl httpRequest = new RequestHttpImpl(Verb.GET, "http://example.com");
+ final OAuthRequest request = new OAuthRequest(httpRequest);
+ extractor.extract(request);
+ }
+
+ @Test
+ public void shouldProperlyEncodeSpaces() {
+ final String expected = "GET&http%3A%2F%2Fexample.com&body%3Dthis%2520param%2520has%2520whitespace%26oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature%26oauth_timestamp%3D123456";
+ request.addBodyParameter("body", "this param has whitespace");
+ assertEquals(expected, extractor.extract(request));
+ }
+}
diff --git a/src/test/java/org/scribe/extractors/HeaderExtractorTest.java b/src/test/java/org/scribe/extractors/HeaderExtractorTest.java
index bdc727cd8..932253a46 100644
--- a/src/test/java/org/scribe/extractors/HeaderExtractorTest.java
+++ b/src/test/java/org/scribe/extractors/HeaderExtractorTest.java
@@ -1,45 +1,45 @@
-package org.scribe.extractors;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.test.helpers.*;
-
-public class HeaderExtractorTest
-{
-
- private HeaderExtractorImpl extractor;
- private OAuthRequest request;
-
- @Before
- public void setup()
- {
- request = ObjectMother.createSampleOAuthRequest();
- extractor = new HeaderExtractorImpl();
- }
-
- @Test
- public void shouldExtractStandardHeader()
- {
- String expected = "OAuth oauth_callback=\"http%3A%2F%2Fexample%2Fcallback\", " + "oauth_signature=\"OAuth-Signature\", "
- + "oauth_consumer_key=\"AS%23%24%5E%2A%40%26\", " + "oauth_timestamp=\"123456\"";
- String header = extractor.extract(request);
- assertEquals(expected, header);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void shouldExceptionIfRequestIsNull()
- {
- OAuthRequest nullRequest = null;
- extractor.extract(nullRequest);
- }
-
- @Test(expected = OAuthParametersMissingException.class)
- public void shouldExceptionIfRequestHasNoOAuthParams()
- {
- OAuthRequest emptyRequest = new OAuthRequest(Verb.GET, "http://example.com");
- extractor.extract(emptyRequest);
- }
-}
+package org.scribe.extractors;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.scribe.exceptions.OAuthParametersMissingException;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.RequestHttpImpl;
+import org.scribe.model.Verb;
+import org.scribe.test.helpers.ObjectMother;
+
+public class HeaderExtractorTest {
+
+ private HeaderExtractorImpl extractor;
+ private OAuthRequest request;
+
+ @Before
+ public void setup() {
+ request = ObjectMother.createSampleOAuthRequest();
+ extractor = new HeaderExtractorImpl();
+ }
+
+ @Test
+ public void shouldExtractStandardHeader() {
+ final String expected = "OAuth oauth_callback=\"http%3A%2F%2Fexample%2Fcallback\", "
+ + "oauth_signature=\"OAuth-Signature\", "
+ + "oauth_consumer_key=\"AS%23%24%5E%2A%40%26\", " + "oauth_timestamp=\"123456\"";
+ final String header = extractor.extract(request);
+ assertEquals(expected, header);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void shouldExceptionIfRequestIsNull() {
+ final OAuthRequest nullRequest = null;
+ extractor.extract(nullRequest);
+ }
+
+ @Test(expected = OAuthParametersMissingException.class)
+ public void shouldExceptionIfRequestHasNoOAuthParams() {
+ final RequestHttpImpl httpRequest = new RequestHttpImpl(Verb.GET, "http://example.com");
+ final OAuthRequest emptyRequest = new OAuthRequest(httpRequest);
+ extractor.extract(emptyRequest);
+ }
+}
diff --git a/src/test/java/org/scribe/model/ConnectionStub.java b/src/test/java/org/scribe/model/ConnectionStub.java
index 7e9331397..3eaac8b88 100644
--- a/src/test/java/org/scribe/model/ConnectionStub.java
+++ b/src/test/java/org/scribe/model/ConnectionStub.java
@@ -1,86 +1,74 @@
-package org.scribe.model;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-public class ConnectionStub extends HttpURLConnection
-{
-
- private Map headers = new HashMap();
- private Map> responseHeaders = new HashMap>();
- private int inputStreamCalled = 0;
-
- public ConnectionStub() throws Exception
- {
- super(new URL("http://example.com"));
- }
-
- @Override
- public void setRequestProperty(String key, String value)
- {
- headers.put(key, value);
- }
-
- @Override
- public String getRequestProperty(String s)
- {
- return headers.get(s);
- }
-
- public Map getHeaders()
- {
- return headers;
- }
-
- @Override
- public int getResponseCode() throws IOException
- {
- return 200;
- }
-
- @Override
- public InputStream getInputStream() throws IOException
- {
- inputStreamCalled++;
- return new ByteArrayInputStream("contents".getBytes());
- }
-
- public int getTimesCalledInpuStream()
- {
- return inputStreamCalled;
- }
-
- @Override
- public OutputStream getOutputStream() throws IOException
- {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- baos.write("contents".getBytes());
- return baos;
- }
-
- @Override
- public Map> getHeaderFields()
- {
- return responseHeaders;
- }
-
- public void addResponseHeader(String key, String value)
- {
- responseHeaders.put(key, Arrays.asList(value));
- }
-
- public void connect() throws IOException
- {
- }
-
- public void disconnect()
- {
- }
-
- public boolean usingProxy()
- {
- return false;
- }
-
-}
+package org.scribe.model;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ConnectionStub extends HttpURLConnection {
+
+ private final Map headers = new HashMap();
+ private final Map> responseHeaders = new HashMap>();
+ private int inputStreamCalled = 0;
+
+ public ConnectionStub() throws Exception {
+ super(new URL("http://example.com"));
+ }
+
+ public void setRequestProperty(final String key, final String value) {
+ headers.put(key, value);
+ }
+
+ public String getRequestProperty(final String s) {
+ return headers.get(s);
+ }
+
+ public Map getHeaders() {
+ return headers;
+ }
+
+ public int getResponseCode() throws IOException {
+ return 200;
+ }
+
+ public InputStream getInputStream() throws IOException {
+ inputStreamCalled++;
+ return new ByteArrayInputStream("contents".getBytes());
+ }
+
+ public int getTimesCalledInpuStream() {
+ return inputStreamCalled;
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ baos.write("contents".getBytes());
+ return baos;
+ }
+
+ public Map> getHeaderFields() {
+ return responseHeaders;
+ }
+
+ public void addResponseHeader(final String key, final String value) {
+ responseHeaders.put(key, Arrays.asList(value));
+ }
+
+ public void connect() throws IOException {
+ }
+
+ public void disconnect() {
+ }
+
+ public boolean usingProxy() {
+ return false;
+ }
+
+}
diff --git a/src/test/java/org/scribe/model/OAuthRequestTest.java b/src/test/java/org/scribe/model/OAuthRequestTest.java
index 1ea2f2fb9..3114f9397 100644
--- a/src/test/java/org/scribe/model/OAuthRequestTest.java
+++ b/src/test/java/org/scribe/model/OAuthRequestTest.java
@@ -1,34 +1,32 @@
-package org.scribe.model;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
-public class OAuthRequestTest
-{
-
- private OAuthRequest request;
-
- @Before
- public void setup()
- {
- request = new OAuthRequest(Verb.GET, "http://example.com");
- }
-
- @Test
- public void shouldAddOAuthParamters()
- {
- request.addOAuthParameter(OAuthConstants.TOKEN, "token");
- request.addOAuthParameter(OAuthConstants.NONCE, "nonce");
- request.addOAuthParameter(OAuthConstants.TIMESTAMP, "ts");
- request.addOAuthParameter(OAuthConstants.SCOPE, "feeds");
-
- assertEquals(4, request.getOauthParameters().size());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowExceptionIfParameterIsNotOAuth()
- {
- request.addOAuthParameter("otherParam", "value");
- }
-}
+package org.scribe.model;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class OAuthRequestTest {
+
+ private OAuthRequest request;
+
+ @Before
+ public void setup() {
+ final RequestHttpImpl httpRequest = new RequestHttpImpl(Verb.GET, "http://example.com");
+ request = new OAuthRequest(httpRequest);
+ }
+
+ @Test
+ public void shouldAddOAuthParamters() {
+ request.addOAuthParameter(OAuthConstants.TOKEN, "token");
+ request.addOAuthParameter(OAuthConstants.NONCE, "nonce");
+ request.addOAuthParameter(OAuthConstants.TIMESTAMP, "ts");
+ request.addOAuthParameter(OAuthConstants.SCOPE, "feeds");
+
+ assertEquals(4, request.getOauthParameters().size());
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void shouldThrowExceptionIfParameterIsNotOAuth() {
+ request.addOAuthParameter("otherParam", "value");
+ }
+}
diff --git a/src/test/java/org/scribe/model/ParameterListTest.java b/src/test/java/org/scribe/model/ParameterListTest.java
index 657e8e218..a16b70c5e 100644
--- a/src/test/java/org/scribe/model/ParameterListTest.java
+++ b/src/test/java/org/scribe/model/ParameterListTest.java
@@ -1,91 +1,83 @@
-package org.scribe.model;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotSame;
-
-/**
- * @author: Pablo Fernandez
- */
-public class ParameterListTest
-{
- private ParameterList params;
-
- @Before
- public void setup()
- {
- this.params = new ParameterList();
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowExceptionWhenAppendingNullMapToQuerystring()
- {
- String url = null;
- params.appendTo(url);
- }
-
- @Test
- public void shouldAppendNothingToQuerystringIfGivenEmptyMap()
- {
- String url = "http://www.example.com";
- Assert.assertEquals(url, params.appendTo(url));
- }
-
- @Test
- public void shouldAppendParametersToSimpleUrl()
- {
- String url = "http://www.example.com";
- String expectedUrl = "http://www.example.com?param1=value1¶m2=value%20with%20spaces";
-
- params.add("param1", "value1");
- params.add("param2", "value with spaces");
-
- url = params.appendTo(url);
- Assert.assertEquals(url, expectedUrl);
- }
-
- @Test
- public void shouldAppendParametersToUrlWithQuerystring()
- {
- String url = "http://www.example.com?already=present";
- String expectedUrl = "http://www.example.com?already=present¶m1=value1¶m2=value%20with%20spaces";
-
- params.add("param1", "value1");
- params.add("param2", "value with spaces");
-
- url = params.appendTo(url);
- Assert.assertEquals(url, expectedUrl);
- }
-
- @Test
- public void shouldProperlySortParameters()
- {
- params.add("param1", "v1");
- params.add("param6", "v2");
- params.add("a_param", "v3");
- params.add("param2", "v4");
- Assert.assertEquals("a_param=v3¶m1=v1¶m2=v4¶m6=v2", params.sort().asFormUrlEncodedString());
- }
-
- @Test
- public void shouldProperlySortParametersWithTheSameName()
- {
- params.add("param1", "v1");
- params.add("param6", "v2");
- params.add("a_param", "v3");
- params.add("param1", "v4");
- Assert.assertEquals("a_param=v3¶m1=v1¶m1=v4¶m6=v2", params.sort().asFormUrlEncodedString());
- }
-
- @Test
- public void shouldNotModifyTheOriginalParameterList()
- {
- params.add("param1", "v1");
- params.add("param6", "v2");
-
- assertNotSame(params, params.sort());
- }
-}
+package org.scribe.model;
+
+import static org.junit.Assert.assertNotSame;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author: Pablo Fernandez
+ */
+public class ParameterListTest {
+ private ParameterList params;
+
+ @Before
+ public void setup() {
+ params = new ParameterList();
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void shouldThrowExceptionWhenAppendingNullMapToQuerystring() {
+ final String url = null;
+ params.appendTo(url);
+ }
+
+ @Test
+ public void shouldAppendNothingToQuerystringIfGivenEmptyMap() {
+ final String url = "http://www.example.com";
+ Assert.assertEquals(url, params.appendTo(url));
+ }
+
+ @Test
+ public void shouldAppendParametersToSimpleUrl() {
+ String url = "http://www.example.com";
+ final String expectedUrl = "http://www.example.com?param1=value1¶m2=value%20with%20spaces";
+
+ params.add("param1", "value1");
+ params.add("param2", "value with spaces");
+
+ url = params.appendTo(url);
+ Assert.assertEquals(url, expectedUrl);
+ }
+
+ @Test
+ public void shouldAppendParametersToUrlWithQuerystring() {
+ String url = "http://www.example.com?already=present";
+ final String expectedUrl = "http://www.example.com?already=present¶m1=value1¶m2=value%20with%20spaces";
+
+ params.add("param1", "value1");
+ params.add("param2", "value with spaces");
+
+ url = params.appendTo(url);
+ Assert.assertEquals(url, expectedUrl);
+ }
+
+ @Test
+ public void shouldProperlySortParameters() {
+ params.add("param1", "v1");
+ params.add("param6", "v2");
+ params.add("a_param", "v3");
+ params.add("param2", "v4");
+ Assert.assertEquals("a_param=v3¶m1=v1¶m2=v4¶m6=v2", params.sort()
+ .asFormUrlEncodedString());
+ }
+
+ @Test
+ public void shouldProperlySortParametersWithTheSameName() {
+ params.add("param1", "v1");
+ params.add("param6", "v2");
+ params.add("a_param", "v3");
+ params.add("param1", "v4");
+ Assert.assertEquals("a_param=v3¶m1=v1¶m1=v4¶m6=v2", params.sort()
+ .asFormUrlEncodedString());
+ }
+
+ @Test
+ public void shouldNotModifyTheOriginalParameterList() {
+ params.add("param1", "v1");
+ params.add("param6", "v2");
+
+ assertNotSame(params, params.sort());
+ }
+}
diff --git a/src/test/java/org/scribe/model/RequestTest.java b/src/test/java/org/scribe/model/RequestTest.java
index c473e779c..e8690a6ff 100644
--- a/src/test/java/org/scribe/model/RequestTest.java
+++ b/src/test/java/org/scribe/model/RequestTest.java
@@ -1,128 +1,125 @@
-package org.scribe.model;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
-public class RequestTest
-{
- private Request getRequest;
- private Request postRequest;
- private ConnectionStub connection;
-
- @Before
- public void setup() throws Exception
- {
- connection = new ConnectionStub();
- postRequest = new Request(Verb.POST, "http://example.com");
- postRequest.addBodyParameter("param", "value");
- postRequest.addBodyParameter("param with spaces", "value with spaces");
- postRequest.setConnection(connection);
- getRequest = new Request(Verb.GET, "http://example.com?qsparam=value&other+param=value+with+spaces");
- getRequest.setConnection(connection);
- }
-
- @Test
- public void shouldSetRequestVerb()
- {
- getRequest.send();
- assertEquals("GET", connection.getRequestMethod());
- }
-
- @Test
- public void shouldGetQueryStringParameters()
- {
- assertEquals(2, getRequest.getQueryStringParams().size());
- assertEquals(0, postRequest.getQueryStringParams().size());
- assertTrue(getRequest.getQueryStringParams().contains(new Parameter("qsparam", "value")));
- }
-
- @Test
- public void shouldAddRequestHeaders()
- {
- getRequest.addHeader("Header", "1");
- getRequest.addHeader("Header2", "2");
- getRequest.send();
- assertEquals(2, getRequest.getHeaders().size());
- assertEquals(2, connection.getHeaders().size());
- }
-
- @Test
- public void shouldSetBodyParamsAndAddContentLength()
- {
- assertEquals("param=value¶m%20with%20spaces=value%20with%20spaces", postRequest.getBodyContents());
- postRequest.send();
- assertTrue(connection.getHeaders().containsKey("Content-Length"));
- }
-
- @Test
- public void shouldSetPayloadAndHeaders()
- {
- postRequest.addPayload("PAYLOAD");
- postRequest.send();
- assertEquals("PAYLOAD", postRequest.getBodyContents());
- assertTrue(connection.getHeaders().containsKey("Content-Length"));
- }
-
- @Test
- public void shouldAllowAddingQuerystringParametersAfterCreation()
- {
- Request request = new Request(Verb.GET, "http://example.com?one=val");
- request.addQuerystringParameter("two", "other val");
- request.addQuerystringParameter("more", "params");
- assertEquals(3, request.getQueryStringParams().size());
- }
-
- @Test
- public void shouldReturnTheCompleteUrl()
- {
- Request request = new Request(Verb.GET, "http://example.com?one=val");
- request.addQuerystringParameter("two", "other val");
- request.addQuerystringParameter("more", "params");
- assertEquals("http://example.com?one=val&two=other%20val&more=params", request.getCompleteUrl());
- }
-
- @Test
- public void shouldHandleQueryStringSpaceEncodingProperly()
- {
- assertTrue(getRequest.getQueryStringParams().contains(new Parameter("other param","value with spaces")));
- }
-
- @Test
- public void shouldAutomaticallyAddContentTypeForPostRequestsWithBytePayload()
- {
- postRequest.addPayload("PAYLOAD".getBytes());
- postRequest.send();
- assertEquals(Request.DEFAULT_CONTENT_TYPE, connection.getHeaders().get("Content-Type"));
- }
-
- @Test
- public void shouldAutomaticallyAddContentTypeForPostRequestsWithStringPayload()
- {
- postRequest.addPayload("PAYLOAD");
- postRequest.send();
- assertEquals(Request.DEFAULT_CONTENT_TYPE, connection.getHeaders().get("Content-Type"));
- }
-
- @Test
- public void shouldAutomaticallyAddContentTypeForPostRequestsWithBodyParameters()
- {
- postRequest.send();
- assertEquals(Request.DEFAULT_CONTENT_TYPE, connection.getHeaders().get("Content-Type"));
- }
-
- @Test
- public void shouldBeAbleToOverrideItsContentType()
- {
- postRequest.addHeader("Content-Type", "my-content-type");
- postRequest.send();
- assertEquals("my-content-type", connection.getHeaders().get("Content-Type"));
- }
-
- @Test
- public void shouldNotAddContentTypeForGetRequests()
- {
- getRequest.send();
- assertFalse(connection.getHeaders().containsKey("Content-Type"));
- }
+package org.scribe.model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class RequestTest {
+ private RequestHttpImpl getRequest;
+ private RequestHttpImpl postRequest;
+ private ConnectionStub connection;
+
+ @Before
+ public void setup() throws Exception {
+ connection = new ConnectionStub();
+ postRequest = new RequestHttpImpl(Verb.POST, "http://example.com");
+ postRequest.addBodyParameter("param", "value");
+ postRequest.addBodyParameter("param with spaces", "value with spaces");
+ // postRequest.setConnection(connection);
+ getRequest = new RequestHttpImpl(Verb.GET,
+ "http://example.com?qsparam=value&other+param=value+with+spaces");
+ // getRequest.setConnection(connection);
+ }
+
+ @Test
+ public void shouldSetRequestVerb() throws IOException {
+ getRequest.send();
+ assertEquals("GET", connection.getRequestMethod());
+ }
+
+ @Test
+ public void shouldGetQueryStringParameters() {
+ assertEquals(2, getRequest.getQueryStringParams().size());
+ assertEquals(0, postRequest.getQueryStringParams().size());
+ assertTrue(getRequest.getQueryStringParams().contains(new Parameter("qsparam", "value")));
+ }
+
+ @Test
+ public void shouldAddRequestHeaders() throws IOException {
+ getRequest.addHeader("Header", "1");
+ getRequest.addHeader("Header2", "2");
+ getRequest.send();
+ assertEquals(2, getRequest.getHeaders().size());
+ assertEquals(2, connection.getHeaders().size());
+ }
+
+ @Test
+ public void shouldSetBodyParamsAndAddContentLength() throws IOException {
+ assertEquals("param=value¶m%20with%20spaces=value%20with%20spaces",
+ postRequest.getBodyContents());
+ postRequest.send();
+ assertTrue(connection.getHeaders().containsKey("Content-Length"));
+ }
+
+ @Test
+ public void shouldSetPayloadAndHeaders() throws IOException {
+ postRequest.addPayload("PAYLOAD");
+ postRequest.send();
+ assertEquals("PAYLOAD", postRequest.getBodyContents());
+ assertTrue(connection.getHeaders().containsKey("Content-Length"));
+ }
+
+ @Test
+ public void shouldAllowAddingQuerystringParametersAfterCreation() {
+ final Request request = new RequestHttpImpl(Verb.GET, "http://example.com?one=val");
+ request.addQuerystringParameter("two", "other val");
+ request.addQuerystringParameter("more", "params");
+ assertEquals(3, request.getQueryStringParams().size());
+ }
+
+ @Test
+ public void shouldReturnTheCompleteUrl() {
+ final RequestHttpImpl request = new RequestHttpImpl(Verb.GET, "http://example.com?one=val");
+ request.addQuerystringParameter("two", "other val");
+ request.addQuerystringParameter("more", "params");
+ assertEquals("http://example.com?one=val&two=other%20val&more=params",
+ request.getCompleteUrl());
+ }
+
+ @Test
+ public void shouldHandleQueryStringSpaceEncodingProperly() {
+ assertTrue(getRequest.getQueryStringParams().contains(
+ new Parameter("other param", "value with spaces")));
+ }
+
+ @Test
+ public void shouldAutomaticallyAddContentTypeForPostRequestsWithBytePayload()
+ throws IOException {
+ postRequest.addPayload("PAYLOAD".getBytes());
+ postRequest.send();
+ assertEquals(Request.DEFAULT_CONTENT_TYPE, connection.getHeaders().get("Content-Type"));
+ }
+
+ @Test
+ public void shouldAutomaticallyAddContentTypeForPostRequestsWithStringPayload()
+ throws IOException {
+ postRequest.addPayload("PAYLOAD");
+ postRequest.send();
+ assertEquals(Request.DEFAULT_CONTENT_TYPE, connection.getHeaders().get("Content-Type"));
+ }
+
+ @Test
+ public void shouldAutomaticallyAddContentTypeForPostRequestsWithBodyParameters()
+ throws IOException {
+ postRequest.send();
+ assertEquals(Request.DEFAULT_CONTENT_TYPE, connection.getHeaders().get("Content-Type"));
+ }
+
+ @Test
+ public void shouldBeAbleToOverrideItsContentType() throws IOException {
+ postRequest.addHeader("Content-Type", "my-content-type");
+ postRequest.send();
+ assertEquals("my-content-type", connection.getHeaders().get("Content-Type"));
+ }
+
+ @Test
+ public void shouldNotAddContentTypeForGetRequests() throws IOException {
+ getRequest.send();
+ assertFalse(connection.getHeaders().containsKey("Content-Type"));
+ }
}
\ No newline at end of file
diff --git a/src/test/java/org/scribe/model/ResponseTest.java b/src/test/java/org/scribe/model/ResponseTest.java
index a58fc0355..ca52b9832 100644
--- a/src/test/java/org/scribe/model/ResponseTest.java
+++ b/src/test/java/org/scribe/model/ResponseTest.java
@@ -1,75 +1,66 @@
-package org.scribe.model;
-
-import static org.junit.Assert.*;
-
-import java.io.*;
-
-import org.junit.*;
-
-public class ResponseTest
-{
-
- private Response response;
- private ConnectionStub connection;
-
- @Before
- public void setup() throws Exception
- {
- connection = new ConnectionStub();
- connection.addResponseHeader("one", "one");
- connection.addResponseHeader("two", "two");
- response = new Response(connection);
- }
-
- @Test
- public void shouldPopulateResponseHeaders()
- {
- assertEquals(2, response.getHeaders().size());
- assertEquals("one", response.getHeader("one"));
- }
-
- @Test
- public void shouldParseBodyContents()
- {
- assertEquals("contents", response.getBody());
- assertEquals(1, connection.getTimesCalledInpuStream());
- }
-
- @Test
- public void shouldParseBodyContentsOnlyOnce()
- {
- assertEquals("contents", response.getBody());
- assertEquals("contents", response.getBody());
- assertEquals("contents", response.getBody());
- assertEquals(1, connection.getTimesCalledInpuStream());
- }
-
- @Test
- public void shouldHandleAConnectionWithErrors() throws Exception
- {
- Response errResponse = new Response(new FaultyConnection());
- assertEquals(400, errResponse.getCode());
- assertEquals("errors", errResponse.getBody());
- }
-
- private static class FaultyConnection extends ConnectionStub
- {
-
- public FaultyConnection() throws Exception
- {
- super();
- }
-
- @Override
- public InputStream getErrorStream()
- {
- return new ByteArrayInputStream("errors".getBytes());
- }
-
- @Override
- public int getResponseCode() throws IOException
- {
- return 400;
- }
- }
-}
+package org.scribe.model;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class ResponseTest {
+
+ private Response response;
+ private ConnectionStub connection;
+
+ @Before
+ public void setup() throws Exception {
+ connection = new ConnectionStub();
+ connection.addResponseHeader("one", "one");
+ connection.addResponseHeader("two", "two");
+ response = new ResponseHttpImpl(connection);
+ }
+
+ @Test
+ public void shouldPopulateResponseHeaders() {
+ assertEquals(2, response.getHeaders().size());
+ assertEquals("one", response.getHeader("one"));
+ }
+
+ @Test
+ public void shouldParseBodyContents() {
+ assertEquals("contents", response.getBody());
+ assertEquals(1, connection.getTimesCalledInpuStream());
+ }
+
+ @Test
+ public void shouldParseBodyContentsOnlyOnce() {
+ assertEquals("contents", response.getBody());
+ assertEquals("contents", response.getBody());
+ assertEquals("contents", response.getBody());
+ assertEquals(1, connection.getTimesCalledInpuStream());
+ }
+
+ @Test
+ public void shouldHandleAConnectionWithErrors() throws Exception {
+ final Response errResponse = new ResponseHttpImpl(new FaultyConnection());
+ assertEquals(400, errResponse.getCode());
+ assertEquals("errors", errResponse.getBody());
+ }
+
+ private static class FaultyConnection extends ConnectionStub {
+
+ public FaultyConnection() throws Exception {
+ super();
+ }
+
+ public InputStream getErrorStream() {
+ return new ByteArrayInputStream("errors".getBytes());
+ }
+
+ public int getResponseCode() throws IOException {
+ return 400;
+ }
+ }
+}
diff --git a/src/test/java/org/scribe/services/RSASha1SignatureServiceTest.java b/src/test/java/org/scribe/services/RSASha1SignatureServiceTest.java
deleted file mode 100644
index 2e78e8492..000000000
--- a/src/test/java/org/scribe/services/RSASha1SignatureServiceTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.scribe.services;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
-import javax.xml.bind.DatatypeConverter;
-import java.security.*;
-import java.security.spec.*;
-
-public class RSASha1SignatureServiceTest
-{
-
- RSASha1SignatureService service = new RSASha1SignatureService(getPrivateKey());
-
- @Test
- public void shouldReturnSignatureMethodString()
- {
- String expected = "RSA-SHA1";
- assertEquals(expected, service.getSignatureMethod());
- }
-
- @Test
- public void shouldReturnSignature()
- {
- String apiSecret = "api secret";
- String tokenSecret = "token secret";
- String baseString = "base string";
- String signature = "LUNRzQAlpdNyM9mLXm96Va6g/qVNnEAb7p7K1KM0g8IopOFQJPoOO7cvppgt7w3QyhijWJnCmvqXaaIAGrqvdyr3fIzBULh8D/iZQUNLMi08GCOA34P81XBvsc7A5uJjPDsGhJg2MzoVJ8nWJhU/lMMk4c92S1WGskeoDofRwpo=";
- assertEquals(signature, service.getSignature(baseString, apiSecret, tokenSecret));
- }
-
- /**
- *Created primary key using openssl.
- *
- * openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj '/C=GB/ST=/L=Manchester/CN=www.example.com' -keyout myrsakey.pem -out /tmp/myrsacert.pem
- * openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8
- */
- private static PrivateKey getPrivateKey()
- {
- String str = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMPQ5BCMxlUq2TYy\n"+
- "iRIoEUsz6HGTJhHuasS2nx1Se4Co3lxwxyubVdFj8AuhHNJSmJvjlpbTsGOjLZpr\n"+
- "HyDEDdJmf1Fensh1MhUnBZ4a7uLrZrKzFHHJdamX9pxapB89vLeHlCot9hVXdrZH\n"+
- "nNtg6FdmRKH/8gbs8iDyIayFvzYDAgMBAAECgYA+c9MpTBy9cQsR9BAvkEPjvkx2\n"+
- "XL4ZnfbDgpNA4Nuu7yzsQrPjPomiXMNkkiAFHH67yVxwAlgRjyuuQlgNNTpKvyQt\n"+
- "XcHxffnU0820VmE23M+L7jg2TlB3+rUnEDmDvCoyjlwGDR6lNb7t7Fgg2iR+iaov\n"+
- "0iVzz+l9w0slRlyGsQJBAPWXW2m3NmFgqfDxtw8fsKC2y8o17/cnPjozRGtWb8LQ\n"+
- "g3VCb8kbOFHOYNGazq3M7+wD1qILF2h/HecgK9eQrZ0CQQDMHXoJMfKKbrFrTKgE\n"+
- "zyggO1gtuT5OXYeFewMEb5AbDI2FfSc2YP7SHij8iQ2HdukBrbTmi6qxh3HmIR58\n"+
- "I/AfAkEA0Y9vr0tombsUB8cZv0v5OYoBZvCTbMANtzfb4AOHpiKqqbohDOevLQ7/\n"+
- "SpvgVCmVaDz2PptcRAyEBZ5MCssneQJAB2pmvaDH7Ambfod5bztLfOhLCtY5EkXJ\n"+
- "n6rZcDbRaHorRhdG7m3VtDKOUKZ2DF7glkQGV33phKukErVPUzlHBwJAScD9TqaG\n"+
- "wJ3juUsVtujV23SnH43iMggXT7m82STpPGam1hPfmqu2Z0niePFo927ogQ7H1EMJ\n"+
- "UHgqXmuvk2X/Ww==";
-
- try
- {
- KeyFactory fac = KeyFactory.getInstance("RSA");
- PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(DatatypeConverter.parseBase64Binary(str));
- return fac.generatePrivate(privKeySpec);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/src/test/java/org/scribe/services/TimestampServiceTest.java b/src/test/java/org/scribe/services/TimestampServiceTest.java
index 352b962ca..dc5456868 100644
--- a/src/test/java/org/scribe/services/TimestampServiceTest.java
+++ b/src/test/java/org/scribe/services/TimestampServiceTest.java
@@ -1,50 +1,42 @@
-package org.scribe.services;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
-public class TimestampServiceTest
-{
-
- private TimestampServiceImpl service;
- private TimestampServiceImpl.Timer timerStub;
-
- @Before
- public void setup()
- {
- service = new TimestampServiceImpl();
- timerStub = new TimerStub();
- service.setTimer(timerStub);
- }
-
- @Test
- public void shouldReturnTimestampInSeconds()
- {
- String expected = "1000";
- assertEquals(expected, service.getTimestampInSeconds());
- }
-
- @Test
- public void shouldReturnNonce()
- {
- String expected = "1042";
- assertEquals(expected, service.getNonce());
- }
-
- private static class TimerStub extends TimestampServiceImpl.Timer
- {
-
- @Override
- public Long getMilis()
- {
- return 1000000L;
- }
-
- @Override
- public Integer getRandomInteger()
- {
- return 42;
- }
- }
-}
+package org.scribe.services;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class TimestampServiceTest {
+
+ private TimestampServiceImpl service;
+ private TimestampServiceImpl.Timer timerStub;
+
+ @Before
+ public void setup() {
+ service = new TimestampServiceImpl();
+ timerStub = new TimerStub();
+ service.setTimer(timerStub);
+ }
+
+ @Test
+ public void shouldReturnTimestampInSeconds() {
+ final String expected = "1000";
+ assertEquals(expected, service.getTimestampInSeconds());
+ }
+
+ @Test
+ public void shouldReturnNonce() {
+ final String expected = "1042";
+ assertEquals(expected, service.getNonce());
+ }
+
+ private static class TimerStub extends TimestampServiceImpl.Timer {
+
+ public long getMilis() {
+ return 1000000L;
+ }
+
+ public int getRandomInteger() {
+ return 42;
+ }
+ }
+}
diff --git a/src/test/java/org/scribe/test/helpers/ObjectMother.java b/src/test/java/org/scribe/test/helpers/ObjectMother.java
index a69a3c13a..3e5bd7eef 100644
--- a/src/test/java/org/scribe/test/helpers/ObjectMother.java
+++ b/src/test/java/org/scribe/test/helpers/ObjectMother.java
@@ -1,17 +1,19 @@
-package org.scribe.test.helpers;
-
-import org.scribe.model.*;
-
-public class ObjectMother
-{
-
- public static OAuthRequest createSampleOAuthRequest()
- {
- OAuthRequest request = new OAuthRequest(Verb.GET, "http://example.com");
- request.addOAuthParameter(OAuthConstants.TIMESTAMP, "123456");
- request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, "AS#$^*@&");
- request.addOAuthParameter(OAuthConstants.CALLBACK, "http://example/callback");
- request.addOAuthParameter(OAuthConstants.SIGNATURE, "OAuth-Signature");
- return request;
- }
-}
+package org.scribe.test.helpers;
+
+import org.scribe.model.OAuthConstants;
+import org.scribe.model.OAuthRequest;
+import org.scribe.model.RequestHttpImpl;
+import org.scribe.model.Verb;
+
+public class ObjectMother {
+
+ public static OAuthRequest createSampleOAuthRequest() {
+ final RequestHttpImpl httpRequest = new RequestHttpImpl(Verb.GET, "http://example.com");
+ final OAuthRequest request = new OAuthRequest(httpRequest);
+ request.addOAuthParameter(OAuthConstants.TIMESTAMP, "123456");
+ request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, "AS#$^*@&");
+ request.addOAuthParameter(OAuthConstants.CALLBACK, "http://example/callback");
+ request.addOAuthParameter(OAuthConstants.SIGNATURE, "OAuth-Signature");
+ return request;
+ }
+}