From 1be46776e563f58046f9e690393696021cff531f Mon Sep 17 00:00:00 2001 From: ThePizzle Date: Wed, 8 Jun 2011 17:15:53 -0400 Subject: [PATCH 1/7] Set timeout parameters in doSend() to avoid NPE --- src/main/java/org/scribe/model/Request.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/scribe/model/Request.java b/src/main/java/org/scribe/model/Request.java index b3a7c66..66aaea2 100644 --- a/src/main/java/org/scribe/model/Request.java +++ b/src/main/java/org/scribe/model/Request.java @@ -28,6 +28,8 @@ class Request private String charset; private byte[] bytePayload = null; private boolean connectionKeepAlive = false; + private Long connectTimeout = null; + private Long readTimeout = null; /** * Creates a new Http Request @@ -76,6 +78,12 @@ class Request Response doSend() 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)) { @@ -278,7 +286,8 @@ class Request */ public void setConnectTimeout(int duration, TimeUnit unit) { - this.connection.setConnectTimeout((int) unit.toMillis(duration)); + this.connectTimeout = unit.toMillis(duration); + //this.connection.setConnectTimeout((int) unit.toMillis(duration)); } /** @@ -290,7 +299,8 @@ class Request */ public void setReadTimeout(int duration, TimeUnit unit) { - this.connection.setReadTimeout((int) unit.toMillis(duration)); + this.readTimeout = unit.toMillis(duration); + //this.connection.setReadTimeout((int) unit.toMillis(duration)); } /** From 10c56bda271413a8dd8967afdda57257c53d9df9 Mon Sep 17 00:00:00 2001 From: ThePizzle Date: Thu, 9 Jun 2011 09:23:33 -0400 Subject: [PATCH 2/7] Fix indentation and remove commented code --- src/main/java/org/scribe/model/Request.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/scribe/model/Request.java b/src/main/java/org/scribe/model/Request.java index 66aaea2..a9c332a 100644 --- a/src/main/java/org/scribe/model/Request.java +++ b/src/main/java/org/scribe/model/Request.java @@ -78,11 +78,13 @@ class Request Response doSend() throws IOException { connection.setRequestMethod(this.verb.name()); - if (connectTimeout != null) { - connection.setConnectTimeout(connectTimeout.intValue()); + if (connectTimeout != null) + { + connection.setConnectTimeout(connectTimeout.intValue()); } - if (readTimeout != null) { - connection.setReadTimeout(readTimeout.intValue()); + if (readTimeout != null) + { + connection.setReadTimeout(readTimeout.intValue()); } addHeaders(connection); if (verb.equals(Verb.PUT) || verb.equals(Verb.POST)) @@ -287,7 +289,6 @@ class Request public void setConnectTimeout(int duration, TimeUnit unit) { this.connectTimeout = unit.toMillis(duration); - //this.connection.setConnectTimeout((int) unit.toMillis(duration)); } /** @@ -300,7 +301,6 @@ class Request public void setReadTimeout(int duration, TimeUnit unit) { this.readTimeout = unit.toMillis(duration); - //this.connection.setReadTimeout((int) unit.toMillis(duration)); } /** From 079ce6a2c2da0dd3e7ff1dff95e2402b9b1f5b0e Mon Sep 17 00:00:00 2001 From: Chia-Wei Li Date: Sun, 17 Jul 2011 11:48:16 +0800 Subject: [PATCH 3/7] Add Plurk API --- .../java/org/scribe/builder/api/PlurkApi.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/org/scribe/builder/api/PlurkApi.java diff --git a/src/main/java/org/scribe/builder/api/PlurkApi.java b/src/main/java/org/scribe/builder/api/PlurkApi.java new file mode 100644 index 0000000..a998b04 --- /dev/null +++ b/src/main/java/org/scribe/builder/api/PlurkApi.java @@ -0,0 +1,26 @@ +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=%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(AUTHORIZE_URL, requestToken.getToken()); + } + + @Override + public String getAccessTokenEndpoint() { + return ACCESS_TOKEN_URL; + } + +} From 79fa710e473f2320e781eadbfd5e636a88d4c93b Mon Sep 17 00:00:00 2001 From: Chia-Wei Li Date: Sun, 17 Jul 2011 14:01:31 +0800 Subject: [PATCH 4/7] Fix code style --- .../java/org/scribe/builder/api/PlurkApi.java | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/scribe/builder/api/PlurkApi.java b/src/main/java/org/scribe/builder/api/PlurkApi.java index a998b04..132c8f0 100644 --- a/src/main/java/org/scribe/builder/api/PlurkApi.java +++ b/src/main/java/org/scribe/builder/api/PlurkApi.java @@ -2,25 +2,27 @@ package org.scribe.builder.api; import org.scribe.model.Token; -public class PlurkApi extends DefaultApi10a { +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=%s"; + private static final String ACCESS_TOKEN_URL = "http://www.plurk.com/OAuth/access_token"; - 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=%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 getRequestTokenEndpoint() { - return REQUEST_TOKEN_URL; - } - - @Override - public String getAuthorizationUrl(Token requestToken) { - return String.format(AUTHORIZE_URL, requestToken.getToken()); - } - - @Override - public String getAccessTokenEndpoint() { - return ACCESS_TOKEN_URL; - } + @Override + public String getAuthorizationUrl(Token requestToken) + { + return String.format(AUTHORIZE_URL, requestToken.getToken()); + } + @Override + public String getAccessTokenEndpoint() + { + return ACCESS_TOKEN_URL; + } } From a62fa36da05102ba0078728efbd33bc913baf0d7 Mon Sep 17 00:00:00 2001 From: Tomas Lin Date: Tue, 2 Aug 2011 13:05:54 +0100 Subject: [PATCH 5/7] added windows live support and example --- .../java/org/scribe/builder/api/LiveApi.java | 37 +++++++++++ .../java/org/scribe/examples/LiveExample.java | 64 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 src/main/java/org/scribe/builder/api/LiveApi.java create mode 100644 src/test/java/org/scribe/examples/LiveExample.java diff --git a/src/main/java/org/scribe/builder/api/LiveApi.java b/src/main/java/org/scribe/builder/api/LiveApi.java new file mode 100644 index 0000000..4a91429 --- /dev/null +++ b/src/main/java/org/scribe/builder/api/LiveApi.java @@ -0,0 +1,37 @@ +package org.scribe.builder.api; + +import org.scribe.extractors.*; + +import org.scribe.model.*; + +import org.scribe.utils.*; + +import static org.scribe.utils.URLUtils.*; + +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(), formURLEncode(config.getCallback()), formURLEncode(config.getScope())); + } else { + return String.format(AUTHORIZE_URL, config.getApiKey(), formURLEncode(config.getCallback())); + } + } + + @Override + public AccessTokenExtractor getAccessTokenExtractor() { + return new JsonTokenExtractor(); + } +} \ No newline at end of file diff --git a/src/test/java/org/scribe/examples/LiveExample.java b/src/test/java/org/scribe/examples/LiveExample.java new file mode 100644 index 0000000..3ddbcaa --- /dev/null +++ b/src/test/java/org/scribe/examples/LiveExample.java @@ -0,0 +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 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! :)"); + + } +} From 62b43855c26916645ae8fa01ee3b752c6b193ee9 Mon Sep 17 00:00:00 2001 From: Tomas Lin Date: Tue, 2 Aug 2011 15:56:43 +0100 Subject: [PATCH 6/7] wrapped line format --- .../java/org/scribe/builder/api/LiveApi.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/scribe/builder/api/LiveApi.java b/src/main/java/org/scribe/builder/api/LiveApi.java index 4a91429..789631f 100644 --- a/src/main/java/org/scribe/builder/api/LiveApi.java +++ b/src/main/java/org/scribe/builder/api/LiveApi.java @@ -8,30 +8,36 @@ import org.scribe.utils.*; import static org.scribe.utils.URLUtils.*; -public class LiveApi extends DefaultApi20 { +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() { + public String getAccessTokenEndpoint() + { return "https://oauth.live.com/token?grant_type=authorization_code"; } @Override - public String getAuthorizationUrl(OAuthConfig config) { + 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()) { + if (config.hasScope()) + { return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), formURLEncode(config.getCallback()), formURLEncode(config.getScope())); - } else { + } else + { return String.format(AUTHORIZE_URL, config.getApiKey(), formURLEncode(config.getCallback())); } } @Override - public AccessTokenExtractor getAccessTokenExtractor() { + public AccessTokenExtractor getAccessTokenExtractor() + { return new JsonTokenExtractor(); } } \ No newline at end of file From 35ca23f442029eeb3151c33449f165a2eceb0df6 Mon Sep 17 00:00:00 2001 From: Scott Scoble Date: Mon, 8 Aug 2011 00:28:23 -0700 Subject: [PATCH 7/7] fixed "invalid character constant" message from eclipse --- src/test/java/org/scribe/examples/LiveExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/scribe/examples/LiveExample.java b/src/test/java/org/scribe/examples/LiveExample.java index 3ddbcaa..ade5a6b 100644 --- a/src/test/java/org/scribe/examples/LiveExample.java +++ b/src/test/java/org/scribe/examples/LiveExample.java @@ -21,7 +21,7 @@ public class LiveExample .provider(LiveApi.class) .apiKey(apiKey) .apiSecret(apiSecret) - .scope('wl.basic') + .scope("wl.basic") .callback("http://localhost:9000/") .build(); Scanner in = new Scanner(System.in);