From 72d4ecf1bca4d87a5f335818eabd7639b4c32171 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Thu, 25 Feb 2016 11:21:37 +0300
Subject: [PATCH 001/250] update Forks chapter in Readme
---
README.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/README.md b/README.md
index 59e58dc7f..4004a29af 100644
--- a/README.md
+++ b/README.md
@@ -103,6 +103,4 @@ Feel free to drop us an email or create issue right here on github.com
## Forks
-Looking for a ScribeJava variation? check the [Fork List](https://github.com/scribejava/scribejava/wiki/Forks)
-
If you have a useful fork that should be listed there please contact us
From 0f3993972f62359c659edc384bf6e7c274b1a914 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Thu, 25 Feb 2016 13:09:31 +0300
Subject: [PATCH 002/250] conforms OAuth 1.0 Tokens to the last not obsolete
specs
---
.../core/model/OAuth1AccessToken.java | 24 +++++++++++++--
.../core/model/OAuth1RequestToken.java | 30 +++++++++++++++----
.../scribejava/core/model/OAuth1Token.java | 10 -------
3 files changed, 47 insertions(+), 17 deletions(-)
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1AccessToken.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1AccessToken.java
index 838fc2adb..e57a7db39 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1AccessToken.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1AccessToken.java
@@ -3,11 +3,11 @@
import java.util.Objects;
/**
- * Represents an OAuth 1 Access Token http://oauth.net/core/1.0a/#rfc.section.6.3.2
+ * Represents an OAuth 1 Access Token http://tools.ietf.org/html/rfc5849#section-2.3
*/
public class OAuth1AccessToken extends OAuth1Token {
- private static final long serialVersionUID = -8784937061938486135L;
+ private static final long serialVersionUID = -103999293167210966L;
public OAuth1AccessToken(String token, String tokenSecret) {
this(token, tokenSecret, null);
@@ -17,6 +17,26 @@ public OAuth1AccessToken(String token, String tokenSecret, String rawResponse) {
super(token, tokenSecret, rawResponse);
}
+ /**
+ * The token identifier.
+ *
+ * @return oauth_token
+ */
+ @Override
+ public String getToken() {
+ return super.getToken();
+ }
+
+ /**
+ * The token shared-secret.
+ *
+ * @return oauth_token_secret
+ */
+ @Override
+ public String getTokenSecret() {
+ return super.getTokenSecret();
+ }
+
@Override
public int hashCode() {
int hash = 3;
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1RequestToken.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1RequestToken.java
index b7db7047b..1c53d4932 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1RequestToken.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1RequestToken.java
@@ -3,17 +3,17 @@
import java.util.Objects;
/**
- * Represents an OAuth 1 Request Token http://oauth.net/core/1.0a/#rfc.section.6.1.2
+ * Represents an OAuth 1 Request Token http://tools.ietf.org/html/rfc5849#section-2.1
*/
public class OAuth1RequestToken extends OAuth1Token {
- private static final long serialVersionUID = 359527630020350893L;
+ private static final long serialVersionUID = 6185104114662587991L;
/**
* oauth_callback_confirmed:
*
- * MUST be present and set to true. The Consumer MAY use this to confirm that the Service Provider received the
- * callback value.
+ * MUST be present and set to "true". The parameter is used to differentiate from previous versions of the protocol.
+ *
*/
private final boolean oauthCallbackConfirmed;
@@ -30,6 +30,26 @@ public OAuth1RequestToken(String token, String tokenSecret, boolean oauthCallbac
this.oauthCallbackConfirmed = oauthCallbackConfirmed;
}
+ /**
+ * The temporary credentials identifier.
+ *
+ * @return oauth_token
+ */
+ @Override
+ public String getToken() {
+ return super.getToken();
+ }
+
+ /**
+ * The temporary credentials shared-secret.
+ *
+ * @return oauth_token_secret
+ */
+ @Override
+ public String getTokenSecret() {
+ return super.getTokenSecret();
+ }
+
public boolean isOauthCallbackConfirmed() {
return oauthCallbackConfirmed;
}
@@ -69,6 +89,6 @@ public String toString() {
return "OAuth1RequestToken{"
+ "oauth_token=" + getToken()
+ ", oauth_token_secret=" + getTokenSecret()
- + ", oauthCallbackConfirmed=" + oauthCallbackConfirmed + '}';
+ + ", oauth_callback_confirmed=" + oauthCallbackConfirmed + '}';
}
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1Token.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1Token.java
index c50fbd29e..3d02f49aa 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1Token.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth1Token.java
@@ -9,18 +9,8 @@ public abstract class OAuth1Token extends Token {
private static final long serialVersionUID = 6285873427974823019L;
- /**
- * oauth_token:
- *
- * The Request/Access Token.
- */
private final String token;
- /**
- * oauth_token_secret:
- *
- * The Token Secret.
- */
private final String tokenSecret;
public OAuth1Token(String token, String tokenSecret, String rawResponse) {
From f7f390a8cfaaabcc6416a94a375e60955b31f9d0 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Thu, 25 Feb 2016 13:26:51 +0300
Subject: [PATCH 003/250] OAuth 1 APIs can choose whether to pass empty
oauth_token param in requests
---
changelog | 1 +
.../scribejava/core/builder/api/DefaultApi10a.java | 10 ++++++++++
.../github/scribejava/core/oauth/OAuth10aService.java | 3 +--
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/changelog b/changelog
index 8e7e9690c..795257fae 100644
--- a/changelog
+++ b/changelog
@@ -2,6 +2,7 @@
* Stack Exchange authentication via OAuth 2.0 (stackoverflow.com, askubuntu.com, etc.).
* Support response in gzip.
* differentiate OAuth1 Access token, OAuth 1 Request Token and OAuth 2 Access token, make them conforms RFCs
+ * OAuth 1 APIs can choose whether to pass empty oauth_token param in requests
[2.2.2]
* make all APIs to be extentable (have protected constructors, useful for testing)
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi10a.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi10a.java
index 89d1eb499..f0920e103 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi10a.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi10a.java
@@ -129,4 +129,14 @@ public Verb getRequestTokenVerb() {
public OAuth10aService createService(OAuthConfig config) {
return new OAuth10aService(this, config);
}
+
+ /**
+ * http://tools.ietf.org/html/rfc5849 says that "The client MAY omit the empty "oauth_token" protocol parameter from
+ * the request", but not all oauth servers are good boys.
+ *
+ * @return whether to inlcude empty oauth_token param to the request
+ */
+ public boolean isEmptyOAuthTokenParamIsRequired() {
+ return false;
+ }
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
index 76b076935..ad9347448 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
@@ -130,8 +130,7 @@ public void signRequest(OAuth1AccessToken token, AbstractRequest request) {
final OAuthConfig config = getConfig();
config.log("signing request: " + request.getCompleteUrl());
- // Do not append the token if empty. This is for two legged OAuth calls.
- if (!token.isEmpty()) {
+ if (!token.isEmpty() || api.isEmptyOAuthTokenParamIsRequired()) {
request.addOAuthParameter(OAuthConstants.TOKEN, token.getToken());
}
config.log("setting token to: " + token);
From 18c1d06234015e7d2e79a9e8ac82f4b32da17de5 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Thu, 25 Feb 2016 16:30:23 +0300
Subject: [PATCH 004/250] extract all oauth token params from response
---
.../apis/google/GoogleJsonTokenExtractor.java | 19 +++-----
.../scribejava/apis/google/GoogleToken.java | 9 +++-
.../OAuth2AccessTokenExtractor.java | 33 +++++++++++---
.../OAuth2AccessTokenJsonExtractor.java | 45 ++++++++++++++++---
.../OAuth2AccessTokenExtractorTest.java | 15 ++++++-
5 files changed, 92 insertions(+), 29 deletions(-)
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleJsonTokenExtractor.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleJsonTokenExtractor.java
index 13b7cff39..9cac46623 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleJsonTokenExtractor.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleJsonTokenExtractor.java
@@ -1,15 +1,14 @@
package com.github.scribejava.apis.google;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import com.github.scribejava.core.extractors.OAuth2AccessTokenJsonExtractor;
+import com.github.scribejava.core.model.OAuth2AccessToken;
/**
* additionally parses OpenID id_token
*/
public class GoogleJsonTokenExtractor extends OAuth2AccessTokenJsonExtractor {
- private static final String REGEXP = "\"id_token\"\\s*:\\s*\"(\\S*?)\"";
+ private static final String ID_TOKEN_REGEX = "\"id_token\"\\s*:\\s*\"(\\S*?)\"";
protected GoogleJsonTokenExtractor() {
}
@@ -24,15 +23,9 @@ public static GoogleJsonTokenExtractor instance() {
}
@Override
- public GoogleToken extract(String response) {
- return new GoogleToken(extractAccessToken(response), extractOpenIdToken(response), response);
- }
-
- private String extractOpenIdToken(String response) {
- final Matcher matcher = Pattern.compile(REGEXP).matcher(response);
- if (matcher.find()) {
- return matcher.group(1);
- }
- return null;
+ protected OAuth2AccessToken createToken(String accessToken, String tokenType, Integer expiresIn,
+ String refreshToken, String scope, String response) {
+ return new GoogleToken(accessToken, tokenType, expiresIn, refreshToken, scope,
+ extractParameter(response, ID_TOKEN_REGEX, false), response);
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleToken.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleToken.java
index 1afe0b084..a47395571 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleToken.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/google/GoogleToken.java
@@ -5,7 +5,7 @@
public class GoogleToken extends OAuth2AccessToken {
- private static final long serialVersionUID = 6150970703986214220L;
+ private static final long serialVersionUID = 7845679917727899612L;
/**
* Id_token is part of OpenID Connect specification. It can hold user information that you can directly extract
@@ -19,7 +19,12 @@ public class GoogleToken extends OAuth2AccessToken {
private final String openIdToken;
public GoogleToken(String accessToken, String openIdToken, String rawResponse) {
- super(accessToken, rawResponse);
+ this(accessToken, null, null, null, null, openIdToken, rawResponse);
+ }
+
+ public GoogleToken(String accessToken, String tokenType, Integer expiresIn, String refreshToken, String scope,
+ String openIdToken, String rawResponse) {
+ super(accessToken, tokenType, expiresIn, refreshToken, scope, rawResponse);
this.openIdToken = openIdToken;
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractor.java b/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractor.java
index 928f9f4d8..dd80c0012 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractor.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractor.java
@@ -12,7 +12,11 @@
*/
public class OAuth2AccessTokenExtractor implements TokenExtractor {
- private static final String TOKEN_REGEX = "access_token=([^&]+)";
+ private static final String ACCESS_TOKEN_REGEX = "access_token=([^&]+)";
+ private static final String TOKEN_TYPE_REGEX = "token_type=([^&]+)";
+ private static final String EXPIRES_IN_REGEX = "expires_in=([^&]+)";
+ private static final String REFRESH_TOKEN_REGEX = "refresh_token=([^&]+)";
+ private static final String SCOPE_REGEX = "scope=([^&]+)";
protected OAuth2AccessTokenExtractor() {
}
@@ -34,13 +38,30 @@ public OAuth2AccessToken extract(String response) {
Preconditions.checkEmptyString(response,
"Response body is incorrect. Can't extract a token from an empty string");
- final Matcher matcher = Pattern.compile(TOKEN_REGEX).matcher(response);
+ final String accessToken = extractParameter(response, ACCESS_TOKEN_REGEX, true);
+ final String tokenType = extractParameter(response, TOKEN_TYPE_REGEX, false);
+ final String expiresInString = extractParameter(response, EXPIRES_IN_REGEX, false);
+ Integer expiresIn;
+ try {
+ expiresIn = expiresInString == null ? null : Integer.valueOf(expiresInString);
+ } catch (NumberFormatException nfe) {
+ expiresIn = null;
+ }
+ final String refreshToken = extractParameter(response, REFRESH_TOKEN_REGEX, false);
+ final String scope = extractParameter(response, SCOPE_REGEX, false);
+
+ return new OAuth2AccessToken(accessToken, tokenType, expiresIn, refreshToken, scope, response);
+ }
+
+ private static String extractParameter(String response, String regex, boolean required) throws OAuthException {
+ final Matcher matcher = Pattern.compile(regex).matcher(response);
if (matcher.find()) {
- final String token = OAuthEncoder.decode(matcher.group(1));
- return new OAuth2AccessToken(token, response);
+ return OAuthEncoder.decode(matcher.group(1));
+ } else if (required) {
+ throw new OAuthException("Response body is incorrect. Can't extract a '" + regex
+ + "' from this: '" + response + "'", null);
} else {
- throw new OAuthException("Response body is incorrect. Can't extract a token from this: '" + response + "'",
- null);
+ return null;
}
}
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenJsonExtractor.java b/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenJsonExtractor.java
index a06e8054d..514f38610 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenJsonExtractor.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenJsonExtractor.java
@@ -6,9 +6,16 @@
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.utils.Preconditions;
+/**
+ * JSON implementation of {@link TokenExtractor} for OAuth 2.0
+ */
public class OAuth2AccessTokenJsonExtractor implements TokenExtractor {
- private static final String ACCESS_TOKENS_REGEXP = "\"access_token\"\\s*:\\s*\"(\\S*?)\"";
+ private static final String ACCESS_TOKEN_REGEX = "\"access_token\"\\s*:\\s*\"(\\S*?)\"";
+ private static final String TOKEN_TYPE_REGEX = "\"token_type\"\\s*:\\s*\"(\\S*?)\"";
+ private static final String EXPIRES_IN_REGEX = "\"expires_in\"\\s*:\\s*\"?(\\d*?)\"?\\D";
+ private static final String REFRESH_TOKEN_REGEX = "\"refresh_token\"\\s*:\\s*\"(\\S*?)\"";
+ private static final String SCOPE_REGEX = "\"scope\"\\s*:\\s*\"(\\S*?)\"";
protected OAuth2AccessTokenJsonExtractor() {
}
@@ -24,16 +31,40 @@ public static OAuth2AccessTokenJsonExtractor instance() {
@Override
public OAuth2AccessToken extract(String response) {
- return new OAuth2AccessToken(extractAccessToken(response), response);
+ Preconditions.checkEmptyString(response,
+ "Response body is incorrect. Can't extract a token from an empty string");
+
+ final String accessToken = extractParameter(response, ACCESS_TOKEN_REGEX, true);
+ final String tokenType = extractParameter(response, TOKEN_TYPE_REGEX, false);
+ final String expiresInString = extractParameter(response, EXPIRES_IN_REGEX, false);
+ Integer expiresIn;
+ try {
+ expiresIn = expiresInString == null ? null : Integer.valueOf(expiresInString);
+ } catch (NumberFormatException nfe) {
+ expiresIn = null;
+ }
+ final String refreshToken = extractParameter(response, REFRESH_TOKEN_REGEX, false);
+ final String scope = extractParameter(response, SCOPE_REGEX, false);
+
+ return createToken(accessToken, tokenType, expiresIn, refreshToken, scope, response);
+ }
+
+ protected OAuth2AccessToken createToken(String accessToken, String tokenType, Integer expiresIn,
+ String refreshToken, String scope, String response) {
+ return new OAuth2AccessToken(accessToken, tokenType, expiresIn, refreshToken, scope, response);
}
- protected String extractAccessToken(String response) {
- Preconditions.checkEmptyString(response, "Cannot extract a token from a null or empty String");
- final Matcher matcher = Pattern.compile(ACCESS_TOKENS_REGEXP).matcher(response);
+ protected static String extractParameter(String response, String regex, boolean required) throws OAuthException {
+ final Matcher matcher = Pattern.compile(regex).matcher(response);
if (matcher.find()) {
return matcher.group(1);
- } else {
- throw new OAuthException("Cannot extract an access token. Response was: " + response);
}
+
+ if (required) {
+ throw new OAuthException("Response body is incorrect. Can't extract a '" + regex
+ + "' from this: '" + response + "'", null);
+ }
+
+ return null;
}
}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractorTest.java b/scribejava-core/src/test/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractorTest.java
index 8ed1707b3..fa66956d5 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractorTest.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/extractors/OAuth2AccessTokenExtractorTest.java
@@ -27,10 +27,23 @@ public void shouldExtractTokenFromOAuthStandardResponse() {
@Test
public void shouldExtractTokenFromResponseWithExpiresParam() {
final String response = "access_token=166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159"
- + "|RsXNdKrpxg8L6QNLWcs2TVTmcaE&expires=5108";
+ + "|RsXNdKrpxg8L6QNLWcs2TVTmcaE&expires_in=5108";
final OAuth2AccessToken extracted = extractor.extract(response);
assertEquals("166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159|RsXNdKrpxg8L6QNLWcs2TVTmcaE",
extracted.getAccessToken());
+ assertEquals(Integer.valueOf(5108), extracted.getExpiresIn());
+ }
+
+ @Test
+ public void shouldExtractTokenFromResponseWithExpiresAndRefreshParam() {
+ final String response = "access_token=166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159"
+ + "|RsXNdKrpxg8L6QNLWcs2TVTmcaE&expires_in=5108&token_type=bearer&refresh_token=166942940015970";
+ final OAuth2AccessToken extracted = extractor.extract(response);
+ assertEquals("166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159|RsXNdKrpxg8L6QNLWcs2TVTmcaE",
+ extracted.getAccessToken());
+ assertEquals(Integer.valueOf(5108), extracted.getExpiresIn());
+ assertEquals("bearer", extracted.getTokenType());
+ assertEquals("166942940015970", extracted.getRefreshToken());
}
@Test
From a2cea9b4fad141e9adad6e799d1257f0a91c4176 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Thu, 25 Feb 2016 16:34:41 +0300
Subject: [PATCH 005/250] show accessToken rawResponse in examples
---
.../com/github/scribejava/apis/examples/AWeberExample.java | 3 ++-
.../java/com/github/scribejava/apis/examples/DiggExample.java | 3 ++-
.../github/scribejava/apis/examples/FacebookAsyncExample.java | 3 ++-
.../com/github/scribejava/apis/examples/FacebookExample.java | 3 ++-
.../com/github/scribejava/apis/examples/FlickrExample.java | 3 ++-
.../github/scribejava/apis/examples/Foursquare2Example.java | 3 ++-
.../github/scribejava/apis/examples/FoursquareExample.java | 3 ++-
.../github/scribejava/apis/examples/FreelancerExample.java | 3 ++-
.../com/github/scribejava/apis/examples/GitHubExample.java | 3 ++-
.../com/github/scribejava/apis/examples/Google20Example.java | 3 ++-
.../com/github/scribejava/apis/examples/GoogleExample.java | 3 ++-
.../java/com/github/scribejava/apis/examples/HHExample.java | 3 ++-
.../com/github/scribejava/apis/examples/ImgurExample.java | 3 ++-
.../com/github/scribejava/apis/examples/Kaixin20Example.java | 3 ++-
.../github/scribejava/apis/examples/LinkedIn20Example.java | 3 ++-
.../com/github/scribejava/apis/examples/LinkedInExample.java | 3 ++-
.../scribejava/apis/examples/LinkedInExampleWithScopes.java | 3 ++-
.../java/com/github/scribejava/apis/examples/LiveExample.java | 3 ++-
.../com/github/scribejava/apis/examples/LoveFilmExample.java | 3 ++-
.../github/scribejava/apis/examples/MailruAsyncExample.java | 3 ++-
.../com/github/scribejava/apis/examples/MailruExample.java | 3 ++-
.../com/github/scribejava/apis/examples/MeetupExample.java | 3 ++-
.../github/scribejava/apis/examples/NeteaseWeiboExample.java | 4 ++--
.../github/scribejava/apis/examples/OdnoklassnikiExample.java | 3 ++-
.../com/github/scribejava/apis/examples/PinterestExample.java | 3 ++-
.../com/github/scribejava/apis/examples/Px500Example.java | 3 ++-
.../com/github/scribejava/apis/examples/RenrenExample.java | 3 ++-
.../github/scribejava/apis/examples/SinaWeibo2Example.java | 3 ++-
.../com/github/scribejava/apis/examples/SinaWeiboExample.java | 4 ++--
.../com/github/scribejava/apis/examples/SkyrockExample.java | 3 ++-
.../com/github/scribejava/apis/examples/SohuWeiboExample.java | 4 ++--
.../github/scribejava/apis/examples/StackExchangeExample.java | 3 ++-
.../com/github/scribejava/apis/examples/TrelloExample.java | 3 ++-
.../com/github/scribejava/apis/examples/TumblrExample.java | 3 ++-
.../com/github/scribejava/apis/examples/TutByExample.java | 3 ++-
.../com/github/scribejava/apis/examples/TwitterExample.java | 3 ++-
.../com/github/scribejava/apis/examples/ViadeoExample.java | 3 ++-
.../com/github/scribejava/apis/examples/VkontakteExample.java | 3 ++-
.../java/com/github/scribejava/apis/examples/XingExample.java | 3 ++-
.../com/github/scribejava/apis/examples/YahooExample.java | 3 ++-
40 files changed, 80 insertions(+), 43 deletions(-)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java
index d1478b901..505f29e1d 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java
@@ -47,7 +47,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java
index e0e7ae8cc..f6ce3702e 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java
@@ -50,7 +50,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
index d610596ab..a8075e9a1 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
@@ -74,7 +74,8 @@ public static void main(String... args) throws InterruptedException, ExecutionEx
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessTokenAsync(verifier, null).get();
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
index 137ec6507..b199df0d7 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
@@ -59,7 +59,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java
index 2f6724777..30a8d1a07 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java
@@ -46,7 +46,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java
index 17c37f5a9..7f5e61a6b 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java
@@ -44,7 +44,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java
index fe6f60e13..7c48e71d5 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java
@@ -42,7 +42,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java
index a135f94f1..46224cb3c 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java
@@ -50,7 +50,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java
index 889c505a8..bbf78434c 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java
@@ -59,7 +59,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
index f4fc5dec3..e9d2e29fe 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
@@ -60,7 +60,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GoogleExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GoogleExample.java
index 19e249d9f..205cd37a8 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GoogleExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GoogleExample.java
@@ -47,7 +47,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
index 9e91e301e..9477ea363 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
@@ -47,7 +47,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
System.out.println("Now we're going to access a protected resource...");
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java
index fd3870708..01409fbb6 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java
@@ -44,7 +44,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java
index 3f79d4d51..17f5ac0fb 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java
@@ -44,7 +44,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java
index 2232e3dc8..e4506b374 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java
@@ -45,7 +45,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java
index e026c969a..5489688c8 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java
@@ -43,7 +43,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java
index e24d39747..17a0d6aaf 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java
@@ -47,7 +47,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java
index 199bb111a..47536186e 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java
@@ -45,7 +45,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java
index 46db1f3ba..55a22b416 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java
@@ -50,7 +50,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
index f0824d2a7..981690be6 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
@@ -58,7 +58,8 @@ public static void main(String... args) throws InterruptedException, ExecutionEx
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessTokenAsync(verifier, null).get();
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
System.out.println("Now we're going to access a protected resource...");
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java
index 6e0ac27c8..4d25f14c2 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java
@@ -46,7 +46,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
System.out.println("Now we're going to access a protected resource...");
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java
index 6a19c459d..3028349ce 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java
@@ -42,7 +42,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java
index e5130908f..60f8082e3 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java
@@ -50,8 +50,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
index a7b1b9710..136b05774 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
@@ -52,7 +52,8 @@ public static void main(String... args) {
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java
index 3860ebfb4..3e0d1cb4b 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java
@@ -45,7 +45,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java
index 9d366e38d..3e969fd06 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java
@@ -42,7 +42,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java
index 48f37ad17..392ff3881 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java
@@ -54,7 +54,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java
index 33e46454e..230f28875 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java
@@ -44,7 +44,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java
index f6ddf99e2..42962c6ed 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java
@@ -50,8 +50,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java
index 3c0a8655a..c90e658d2 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java
@@ -42,7 +42,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java
index 3f39264fa..9bd89762d 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java
@@ -50,8 +50,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java
index c6f8a4288..47d43168e 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java
@@ -64,7 +64,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java
index c2076371f..1c274a060 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java
@@ -44,7 +44,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java
index 2b1b32f9d..413214eec 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java
@@ -44,7 +44,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
index c3c7075a2..74ae83af9 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
@@ -47,7 +47,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java
index 1c26e836b..90446f8a6 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java
@@ -42,7 +42,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken accessToken = service.getAccessToken(requestToken, verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if you're curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java
index 76516ee91..caffce403 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java
@@ -44,7 +44,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java
index 5213a1b05..d9be140d5 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java
@@ -45,7 +45,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java
index 5542c34cc..c09b1ddc3 100755
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java
@@ -42,7 +42,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java
index e2cda508c..d6f8e2e72 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java
@@ -43,7 +43,8 @@ public static void main(String... args) {
System.out.println("Trading the Request Token for an Access Token...");
final OAuth1AccessToken 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("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
// Now let's go and ask for a protected resource!
From 23e7f930f5e64067669a6365bcebd06050fec856 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 26 Feb 2016 14:23:29 +0300
Subject: [PATCH 006/250] allow to pass any additional params to auth url
---
.../core/builder/api/DefaultApi20.java | 29 +++++++++++++++++++
.../scribejava/core/oauth/OAuth20Service.java | 15 ++++++++--
2 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java
index c789da72a..fe07dbf6c 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java
@@ -6,6 +6,8 @@
import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import com.github.scribejava.core.utils.OAuthEncoder;
+import java.util.Map;
/**
* Default implementation of the OAuth protocol, version 2.0 (draft 11)
@@ -55,6 +57,33 @@ public Verb getAccessTokenVerb() {
*/
public abstract String getAuthorizationUrl(OAuthConfig config);
+ /**
+ * Returns the URL where you should redirect your users to authenticate your application.
+ *
+ * @param config OAuth 2.0 configuration param object
+ * @param additionalParams any additional GET params to add to the URL
+ * @return the URL where you should redirect your users
+ */
+ public String getAuthorizationUrl(OAuthConfig config, Map additionalParams) {
+ String authUrl = getAuthorizationUrl(config);
+
+ if (additionalParams != null && !additionalParams.isEmpty()) {
+ final StringBuilder authUrlWithParams = new StringBuilder(authUrl)
+ .append(authUrl.indexOf('?') == -1 ? '?' : '&');
+
+ for (Map.Entry param : additionalParams.entrySet()) {
+ authUrlWithParams.append(OAuthEncoder.encode(param.getKey()))
+ .append('=')
+ .append(OAuthEncoder.encode(param.getValue()))
+ .append('&');
+ }
+
+ authUrl = authUrlWithParams.substring(0, authUrlWithParams.length() - 1);
+ }
+
+ return authUrl;
+ }
+
public OAuth20Service createService(OAuthConfig config) {
return new OAuth20Service(this, config);
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index 84ae8a8ef..4eecefa1f 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -13,6 +13,7 @@
import com.github.scribejava.core.model.OAuthRequestAsync;
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verifier;
+import java.util.Map;
public class OAuth20Service extends OAuthService {
@@ -94,8 +95,18 @@ public void signRequest(OAuth2AccessToken accessToken, AbstractRequest request)
*
* @return the URL where you should redirect your users
*/
- public String getAuthorizationUrl() {
- return api.getAuthorizationUrl(getConfig());
+ public final String getAuthorizationUrl() {
+ return getAuthorizationUrl(null);
+ }
+
+ /**
+ * Returns the URL where you should redirect your users to authenticate your application.
+ *
+ * @param additionalParams any additional GET params to add to the URL
+ * @return the URL where you should redirect your users
+ */
+ public String getAuthorizationUrl(Map additionalParams) {
+ return api.getAuthorizationUrl(getConfig(), additionalParams);
}
public DefaultApi20 getApi() {
From 1e4238bc1f2aa490b8c142b976e3087303f63a4a Mon Sep 17 00:00:00 2001
From: Daniel Tyreus
Date: Wed, 13 Jan 2016 17:53:38 -0800
Subject: [PATCH 007/250] support OAuth 2 refresh token (+update urls for
Google)
---
changelog | 1 +
.../github/scribejava/apis/FacebookApi.java | 4 +--
.../github/scribejava/apis/GoogleApi20.java | 2 +-
.../scribejava/apis/NeteaseWeibooApi.java | 3 +-
.../apis/examples/FacebookExample.java | 1 +
.../apis/examples/Google20Example.java | 18 ++++++++--
.../core/model/OAuth2AccessToken.java | 6 +++-
.../scribejava/core/model/OAuthConstants.java | 2 +-
.../core/oauth/OAuth10aService.java | 26 ++++++--------
.../scribejava/core/oauth/OAuth20Service.java | 36 +++++++++++++++++++
10 files changed, 76 insertions(+), 23 deletions(-)
diff --git a/changelog b/changelog
index 795257fae..1904d9081 100644
--- a/changelog
+++ b/changelog
@@ -3,6 +3,7 @@
* Support response in gzip.
* differentiate OAuth1 Access token, OAuth 1 Request Token and OAuth 2 Access token, make them conforms RFCs
* OAuth 1 APIs can choose whether to pass empty oauth_token param in requests
+ * Support refresh tokens for OAuth2 (very thanks to P. Daniel Tyreus https://github.com/pdtyreus)
[2.2.2]
* make all APIs to be extentable (have protected constructors, useful for testing)
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
index ec0acd245..c3f3bfcea 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
@@ -9,9 +9,8 @@
import com.github.scribejava.core.utils.OAuthEncoder;
import com.github.scribejava.core.utils.Preconditions;
-/***
+/**
* Facebook v2.5 API
- *
*/
public class FacebookApi extends DefaultApi20 {
@@ -22,6 +21,7 @@ protected FacebookApi() {
}
private static class InstanceHolder {
+
private static final FacebookApi INSTANCE = new FacebookApi();
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
index cde5105a0..9e02c0cfa 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
@@ -34,7 +34,7 @@ public Verb getAccessTokenVerb() {
@Override
public String getAccessTokenEndpoint() {
- return "https://accounts.google.com/o/oauth2/token";
+ return "https://www.googleapis.com/oauth2/v4/token";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/NeteaseWeibooApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/NeteaseWeibooApi.java
index 317d1e74e..91edb38ca 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/NeteaseWeibooApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/NeteaseWeibooApi.java
@@ -32,14 +32,15 @@ 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)
+ * @return url to redirect user to (to get code)
*/
+ @Override
public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
index b199df0d7..a7d4a76f4 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
@@ -27,6 +27,7 @@ public static void main(String... args) {
.state(secretState)
.callback("http://www.example.com/oauth_callback/")
.build(FacebookApi.instance());
+
final Scanner in = new Scanner(System.in, "UTF-8");
System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
index e9d2e29fe..964560044 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
@@ -10,6 +10,8 @@
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.model.Verifier;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.util.HashMap;
+import java.util.Map;
public abstract class Google20Example {
@@ -35,7 +37,13 @@ public static void main(String... args) {
// Obtain the Authorization URL
System.out.println("Fetching the Authorization URL...");
- final String authorizationUrl = service.getAuthorizationUrl();
+ //pass access_type=offline to get refresh token
+ //https://developers.google.com/identity/protocols/OAuth2WebServer#preparing-to-start-the-oauth-20-flow
+ final Map additionalParams = new HashMap<>();
+ additionalParams.put("access_type", "offline");
+ //force to reget refresh token (if usera are asked not the first time)
+ additionalParams.put("prompt", "consent");
+ final String authorizationUrl = service.getAuthorizationUrl(additionalParams);
System.out.println("Got the Authorization URL!");
System.out.println("Now go and authorize ScribeJava here:");
System.out.println(authorizationUrl);
@@ -58,8 +66,14 @@ public static void main(String... args) {
// Trade the Request Token and Verfier for the Access Token
System.out.println("Trading the Request Token for an Access Token...");
- final OAuth2AccessToken accessToken = service.getAccessToken(verifier);
+ OAuth2AccessToken accessToken = service.getAccessToken(verifier);
System.out.println("Got the Access Token!");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
+
+ System.out.println("Refreshing the Access Token...");
+ accessToken = service.refreshAccessToken(accessToken.getRefreshToken());
+ System.out.println("Refreshed the Access Token!");
System.out.println("(if your curious it looks like this: " + accessToken
+ ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2AccessToken.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2AccessToken.java
index 5205aa64f..b97e4e0a0 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2AccessToken.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2AccessToken.java
@@ -4,7 +4,11 @@
import java.util.Objects;
/**
- * Represents an OAuth 2 Access Token http://tools.ietf.org/html/rfc6749#section-5.1
+ * Represents an OAuth 2 Access token.
+ *
+ * http://tools.ietf.org/html/rfc6749#section-5.1
+ *
+ * @see OAuth 2 Access Token Specification
*/
public class OAuth2AccessToken extends Token {
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
index 229392c38..4648b24e1 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
@@ -20,7 +20,6 @@ public interface OAuthConstants {
String OUT_OF_BAND = "oob";
String VERIFIER = "oauth_verifier";
String HEADER = "Authorization";
- OAuth1RequestToken EMPTY_TOKEN = new OAuth1RequestToken("", "");
String SCOPE = "scope";
// OAuth 2.0
@@ -29,6 +28,7 @@ public interface OAuthConstants {
String CLIENT_SECRET = "client_secret";
String REDIRECT_URI = "redirect_uri";
String CODE = "code";
+ String REFRESH_TOKEN = "refresh_token";
String GRANT_TYPE = "grant_type";
String AUTHORIZATION_CODE = "authorization_code";
String STATE = "state";
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
index ad9347448..b03001d77 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
@@ -8,7 +8,6 @@
import com.github.scribejava.core.model.AbstractRequest;
import com.github.scribejava.core.model.OAuth1AccessToken;
import com.github.scribejava.core.model.OAuth1RequestToken;
-import com.github.scribejava.core.model.OAuth1Token;
import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.OAuthConstants;
@@ -50,7 +49,7 @@ public OAuth1RequestToken getRequestToken() {
config.log("setting oauth_callback to " + config.getCallback());
request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback());
- addOAuthParams(request, OAuthConstants.EMPTY_TOKEN);
+ addOAuthParams(request, "");
appendSignature(request);
config.log("sending request...");
@@ -62,7 +61,7 @@ public OAuth1RequestToken getRequestToken() {
return api.getRequestTokenExtractor().extract(body);
}
- private void addOAuthParams(AbstractRequest request, OAuth1Token token) {
+ private void addOAuthParams(AbstractRequest request, String tokenSecret) {
final OAuthConfig config = getConfig();
request.addOAuthParameter(OAuthConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds());
request.addOAuthParameter(OAuthConstants.NONCE, api.getTimestampService().getNonce());
@@ -72,7 +71,7 @@ private void addOAuthParams(AbstractRequest request, OAuth1Token token) {
if (config.hasScope()) {
request.addOAuthParameter(OAuthConstants.SCOPE, config.getScope());
}
- request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, token));
+ request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, tokenSecret));
config.log("appended additional OAuth parameters: " + MapUtils.toString(request.getOauthParameters()));
}
@@ -87,8 +86,8 @@ public final OAuth1AccessToken getAccessToken(OAuth1RequestToken requestToken, V
}
/**
- * Start the request to retrieve the access token. The optionally provided callback will be called with the Token
- * when it is available.
+ * Start the request to retrieve the access token. The optionally provided
+ * callback will be called with the Token when it is available.
*
* @param requestToken request token (obtained previously or null)
* @param verifier verifier code
@@ -122,7 +121,7 @@ protected void prepareAccessTokenRequest(AbstractRequest request, OAuth1RequestT
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);
+ addOAuthParams(request, requestToken.getTokenSecret());
appendSignature(request);
}
@@ -134,20 +133,18 @@ public void signRequest(OAuth1AccessToken token, AbstractRequest request) {
request.addOAuthParameter(OAuthConstants.TOKEN, token.getToken());
}
config.log("setting token to: " + token);
- addOAuthParams(request, token);
+ addOAuthParams(request, token.getTokenSecret());
appendSignature(request);
}
- /**
- * {@inheritDoc}
- */
@Override
public String getVersion() {
return VERSION;
}
/**
- * Returns the URL where you should redirect your users to authenticate your application.
+ * 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
@@ -156,13 +153,12 @@ public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
return api.getAuthorizationUrl(requestToken);
}
- private String getSignature(AbstractRequest request, OAuth1Token token) {
+ private String getSignature(AbstractRequest request, String tokenSecret) {
final OAuthConfig config = getConfig();
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.getTokenSecret());
+ final String signature = api.getSignatureService().getSignature(baseString, config.getApiSecret(), tokenSecret);
config.log("base string is: " + baseString);
config.log("signature is: " + signature);
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index 4eecefa1f..76c680922 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -78,6 +78,42 @@ protected T createAccessTokenRequest(Verifier verifi
return request;
}
+ public final OAuth2AccessToken refreshAccessToken(String refreshToken) {
+ final Response response = createRefreshTokenRequest(refreshToken,
+ new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this)).send();
+ return api.getAccessTokenExtractor().extract(response.getBody());
+ }
+
+ public final Future refreshAccessTokenAsync(String refreshToken,
+ OAuthAsyncRequestCallback callback) {
+ return refreshAccessTokenAsync(refreshToken, callback, null);
+ }
+
+ public final Future refreshAccessTokenAsync(String refreshToken,
+ OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
+ final OAuthRequestAsync request = createRefreshTokenRequest(refreshToken,
+ new OAuthRequestAsync(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
+ return request.sendAsync(callback, new OAuthRequestAsync.ResponseConverter() {
+ @Override
+ public OAuth2AccessToken convert(com.ning.http.client.Response response) throws IOException {
+ return getApi().getAccessTokenExtractor()
+ .extract(OAuthRequestAsync.RESPONSE_CONVERTER.convert(response).getBody());
+ }
+ }, proxyServer);
+ }
+
+ protected T createRefreshTokenRequest(String refreshToken, T request) {
+ if (refreshToken == null || refreshToken.isEmpty()) {
+ throw new IllegalArgumentException("The refreshToken cannot be null or empty");
+ }
+ final OAuthConfig config = getConfig();
+ request.addParameter(OAuthConstants.CLIENT_ID, config.getApiKey());
+ request.addParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret());
+ request.addParameter(OAuthConstants.REFRESH_TOKEN, refreshToken);
+ request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.REFRESH_TOKEN);
+ return request;
+ }
+
/**
* {@inheritDoc}
*/
From 8c8d9b479c4cdc464c028b848a637035ac659102 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 26 Feb 2016 18:04:30 +0300
Subject: [PATCH 008/250] prepare 2.3.0 release
---
README.md | 4 ++--
changelog | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 4004a29af..3323a9dc9 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@ You can pull ScribeJava from the central maven repository, just add these to you
com.github.scribejava
scribejava-apis
- 2.2.2
+ 2.3.0
```
@@ -87,7 +87,7 @@ And in case you need just core classes (that's it, without any external API (FB,
com.github.scribejava
scribejava-core
- 2.2.2
+ 2.3.0
```
diff --git a/changelog b/changelog
index 1904d9081..75372e3b3 100644
--- a/changelog
+++ b/changelog
@@ -1,4 +1,4 @@
-[SNAPSHOT]
+[2.3.0]
* Stack Exchange authentication via OAuth 2.0 (stackoverflow.com, askubuntu.com, etc.).
* Support response in gzip.
* differentiate OAuth1 Access token, OAuth 1 Request Token and OAuth 2 Access token, make them conforms RFCs
From 73b46fe1640b58c37c610670b406db481a547302 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 26 Feb 2016 18:05:11 +0300
Subject: [PATCH 009/250] [maven-release-plugin] prepare release
scribejava-2.3.0
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 2a2a7abfe..b47444554 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.2.3-SNAPSHOT
+ 2.3.0
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index f661a6b4c..64178f60a 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.2.3-SNAPSHOT
+ 2.3.0
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 08aa2ce57..80d68f0d2 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.2.3-SNAPSHOT
+ 2.3.0
../pom.xml
From 5a9ca46254426de46f33b03d1e1da6c351d5836c Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 26 Feb 2016 18:05:16 +0300
Subject: [PATCH 010/250] [maven-release-plugin] prepare for next development
iteration
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index b47444554..d34a6276f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.3.0
+ 2.3.1-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 64178f60a..23e975072 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.3.0
+ 2.3.1-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 80d68f0d2..b4730b400 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.3.0
+ 2.3.1-SNAPSHOT
../pom.xml
From 87779522b63690140a859f20b061cb01170e5c95 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Thu, 3 Mar 2016 12:41:14 +0300
Subject: [PATCH 011/250] fix typo in README
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 3323a9dc9..871a543f8 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ Hit ScribeJava as hard and with many threads as you like.
### Async
-You can user ning async http client out-of-box, just use ServiceBuilderAsync
+You can use ning async http client out-of-box, just use ServiceBuilderAsync
### Supports all major 1.0a and 2.0 OAuth APIs out-of-the-box
From 5593084434750aa24b949affd18bd94700105486 Mon Sep 17 00:00:00 2001
From: Maksim Likharev
Date: Thu, 3 Mar 2016 14:45:28 -0800
Subject: [PATCH 012/250] resource owner password credentials grant
---
pom.xml | 6 ++
.../scribejava/core/model/OAuthConstants.java | 3 +
.../scribejava/core/oauth/OAuth20Service.java | 66 +++++++++++++++++--
.../core/utils/Uninterruptibles.java | 37 +++++++++++
.../core/oauth/CompletedFuture.java | 43 ++++++++++++
.../scribejava/core/oauth/OAuth20ApiUnit.java | 22 +++++++
.../core/oauth/OAuth20ServiceTest.java | 50 ++++++++++++++
.../core/oauth/OAuth20ServiceUnit.java | 57 ++++++++++++++++
8 files changed, 277 insertions(+), 7 deletions(-)
create mode 100644 scribejava-core/src/main/java/com/github/scribejava/core/utils/Uninterruptibles.java
create mode 100644 scribejava-core/src/test/java/com/github/scribejava/core/oauth/CompletedFuture.java
create mode 100644 scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java
create mode 100644 scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
create mode 100644 scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceUnit.java
diff --git a/pom.xml b/pom.xml
index d34a6276f..cca9d984b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,6 +80,12 @@
4.12
test
+
+ com.google.code.gson
+ gson
+ 2.6.2
+ test
+
commons-codec
commons-codec
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
index 4648b24e1..687970171 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
@@ -21,6 +21,7 @@ public interface OAuthConstants {
String VERIFIER = "oauth_verifier";
String HEADER = "Authorization";
String SCOPE = "scope";
+ String BASIC = "Basic";
// OAuth 2.0
String ACCESS_TOKEN = "access_token";
@@ -32,4 +33,6 @@ public interface OAuthConstants {
String GRANT_TYPE = "grant_type";
String AUTHORIZATION_CODE = "authorization_code";
String STATE = "state";
+ String USERNAME = "username";
+ String PASSWORD = "password";
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index 76c680922..3e6e35088 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -1,7 +1,12 @@
package com.github.scribejava.core.oauth;
+import com.github.scribejava.core.exceptions.OAuthException;
+import com.github.scribejava.core.services.Base64Encoder;
+import com.github.scribejava.core.utils.Uninterruptibles;
import com.ning.http.client.ProxyServer;
import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.AbstractRequest;
@@ -13,6 +18,8 @@
import com.github.scribejava.core.model.OAuthRequestAsync;
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verifier;
+import org.apache.commons.codec.binary.Base64;
+
import java.util.Map;
public class OAuth20Service extends OAuthService {
@@ -32,9 +39,11 @@ public OAuth20Service(DefaultApi20 api, OAuthConfig config) {
}
public final OAuth2AccessToken getAccessToken(Verifier verifier) {
- final Response response = createAccessTokenRequest(verifier,
- new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this)).send();
- return api.getAccessTokenExtractor().extract(response.getBody());
+ return Uninterruptibles.getUninterruptibly( getAccessTokenAsync(verifier, null) );
+ }
+
+ public final OAuth2AccessToken getAccessTokenPasswordGrant(String uname, String password) {
+ return Uninterruptibles.getUninterruptibly( getAccessTokenPasswordGrantAsync(uname, password, null) );
}
/**
@@ -54,15 +63,60 @@ public final Future getAccessTokenAsync(Verifier verifier,
OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
final OAuthRequestAsync request = createAccessTokenRequest(verifier,
new OAuthRequestAsync(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
+
+ return getAccessTokenAsync(request, callback, proxyServer);
+ }
+
+ public final Future getAccessTokenPasswordGrantAsync(String uname, String password,
+ OAuthAsyncRequestCallback callback) {
+ final OAuthRequestAsync request = createAccessTokenPasswordGrantRequest(uname, password,
+ new OAuthRequestAsync(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
+
+ return getAccessTokenPasswordGrantAsync(uname, password, callback, null);
+ }
+
+ public final Future getAccessTokenPasswordGrantAsync(String uname, String password,
+ OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
+ final OAuthRequestAsync request = createAccessTokenPasswordGrantRequest(uname, password,
+ new OAuthRequestAsync(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
+
+ return getAccessTokenAsync(request, callback, proxyServer);
+ }
+
+ protected Future getAccessTokenAsync(OAuthRequestAsync request,
+ OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
+
return request.sendAsync(callback, new OAuthRequestAsync.ResponseConverter() {
@Override
public OAuth2AccessToken convert(com.ning.http.client.Response response) throws IOException {
return getApi().getAccessTokenExtractor()
- .extract(OAuthRequestAsync.RESPONSE_CONVERTER.convert(response).getBody());
+ .extract(OAuthRequestAsync.RESPONSE_CONVERTER.convert(response).getBody());
}
}, proxyServer);
}
+ protected T createAccessTokenPasswordGrantRequest(String username, String password, T request) {
+ final OAuthConfig config = getConfig();
+ request.addParameter(OAuthConstants.USERNAME, username);
+ request.addParameter(OAuthConstants.PASSWORD, password);
+
+ if (config.hasScope()) {
+ request.addParameter(OAuthConstants.SCOPE, config.getScope());
+ }
+
+ request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.PASSWORD);
+
+ request.addHeader(OAuthConstants.HEADER, OAuthConstants.BASIC + " " +
+ Base64Encoder.getInstance().encode(
+ String.format("%s:%s", config.getApiKey(), config.getApiSecret()).getBytes(
+ Charset.forName("UTF-8")
+ )
+ )
+ );
+
+ return request;
+ }
+
protected T createAccessTokenRequest(Verifier verifier, T request) {
final OAuthConfig config = getConfig();
request.addParameter(OAuthConstants.CLIENT_ID, config.getApiKey());
@@ -79,9 +133,7 @@ protected T createAccessTokenRequest(Verifier verifi
}
public final OAuth2AccessToken refreshAccessToken(String refreshToken) {
- final Response response = createRefreshTokenRequest(refreshToken,
- new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this)).send();
- return api.getAccessTokenExtractor().extract(response.getBody());
+ return Uninterruptibles.getUninterruptibly( refreshAccessTokenAsync(refreshToken, null) );
}
public final Future refreshAccessTokenAsync(String refreshToken,
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/utils/Uninterruptibles.java b/scribejava-core/src/main/java/com/github/scribejava/core/utils/Uninterruptibles.java
new file mode 100644
index 000000000..c3ed57995
--- /dev/null
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/utils/Uninterruptibles.java
@@ -0,0 +1,37 @@
+package com.github.scribejava.core.utils;
+
+import com.github.scribejava.core.exceptions.OAuthException;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+
+public final class Uninterruptibles {
+ /**
+ *
+ * This is part of the code from guava, copied here as the project doesn't include one.
+ *
+ * Invokes {@code future.}{@link Future#get() get()} uninterruptibly.
+ */
+ public static V getUninterruptibly(Future future) {
+ boolean interrupted = false;
+ try {
+ while (true) {
+ try {
+ return future.get();
+ } catch (InterruptedException e) {
+ interrupted = true;
+ }
+ }
+ }
+ catch( ExecutionException e ) {
+ throw new OAuthException( e );
+ }
+ finally {
+ if (interrupted) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+
+}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/CompletedFuture.java b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/CompletedFuture.java
new file mode 100644
index 000000000..1c4a3f068
--- /dev/null
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/CompletedFuture.java
@@ -0,0 +1,43 @@
+package com.github.scribejava.core.oauth;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ */
+class CompletedFuture implements Future {
+ private final V result;
+
+ public CompletedFuture( V result ) {
+ this.result = result;
+ }
+
+ @Override
+ public boolean cancel(boolean mayInterruptIfRunning) {
+ return false;
+ }
+
+ @Override
+ public boolean isCancelled() {
+ return false;
+ }
+
+ @Override
+ public boolean isDone() {
+ return true;
+ }
+
+ @Override
+ public V get() throws InterruptedException, ExecutionException {
+ return result;
+ }
+
+ @Override
+ public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException,
+ TimeoutException {
+
+ return result;
+ }
+}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java
new file mode 100644
index 000000000..398173d11
--- /dev/null
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java
@@ -0,0 +1,22 @@
+package com.github.scribejava.core.oauth;
+
+import com.github.scribejava.core.builder.api.DefaultApi20;
+import com.github.scribejava.core.model.OAuthConfig;
+
+/**
+ */
+class OAuth20ApiUnit extends DefaultApi20 {
+ @Override
+ public String getAccessTokenEndpoint() {
+ return "http://localhost:8080/token";
+ }
+
+ @Override
+ public String getAuthorizationUrl(OAuthConfig config) {
+ return "http://localhost:8080/authorize";
+ }
+
+ public OAuth20Service createService(OAuthConfig config) {
+ return new OAuth20ServiceUnit(this, config);
+ }
+}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
new file mode 100644
index 000000000..731eba951
--- /dev/null
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
@@ -0,0 +1,50 @@
+package com.github.scribejava.core.oauth;
+
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuthConstants;
+import com.github.scribejava.core.services.Base64Encoder;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.nio.charset.Charset;
+import java.util.Map;
+
+/**
+ */
+public class OAuth20ServiceTest {
+
+ @Test
+ public void shouldProduceCorrectRequest() {
+ final OAuth20Service service = new ServiceBuilder()
+ .apiKey("your_api_key")
+ .apiSecret("your_api_secret")
+ .build( new OAuth20ApiUnit() );
+
+ final OAuth2AccessToken token = service.getAccessTokenPasswordGrant("user1", "password1");
+ final Gson json = new Gson();
+
+ Assert.assertNotNull(token);
+
+ Map map = json.fromJson(token.getRawResponse(),
+ new TypeToken
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 860b5ef20..22d957e79 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -14,4 +14,16 @@
ScribeJava Core
jar
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
From 62959e6c338bf607387f4380dc404e095484da4e Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Tue, 22 Mar 2016 12:57:30 +0300
Subject: [PATCH 032/250] fix javadoc issue
---
.../github/scribejava/core/builder/AbstractServiceBuilder.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
index 8937afc0a..63ca9d816 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
@@ -176,6 +176,7 @@ public String getResponseType() {
/**
* Returns the fully configured {@link S}
*
+ * @param OAuthService implementation (OAuth1/OAuth2/any API specific)
* @param api will build Service for this API
* @return fully configured {@link S}
*/
From c328d5db81d97dbffa395bf9fd376f75b52dc6d5 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Tue, 22 Mar 2016 15:05:37 +0300
Subject: [PATCH 033/250] apiSecret is not mandatory parameter in config (to
use on client sides and other flows without need of the API secret)
---
changelog | 1 +
.../github/scribejava/core/builder/AbstractServiceBuilder.java | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/changelog b/changelog
index a29f9d59f..8edc13ab6 100644
--- a/changelog
+++ b/changelog
@@ -1,6 +1,7 @@
[SNAPSHOT]
* add Google Async Exmaple (with bugfix for it to work)
* add OSGI manifest metadata
+ * apiSecret is not mandatory parameter in config (to use on client sides and other flows without need of the API secret)
[2.4.0]
* APIs 2.0 can define different endpoints for access token and for refresh token (the same urls by default)
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
index 63ca9d816..cd8fc487e 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
@@ -132,7 +132,6 @@ public T debug() {
public void checkPreconditions() {
Preconditions.checkEmptyString(apiKey, "You must provide an api key");
- Preconditions.checkEmptyString(apiSecret, "You must provide an api secret");
}
public String getCallback() {
From aedc5890be77d2f50f1c2128bedb95516c397fcc Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 13:54:07 +0300
Subject: [PATCH 034/250] implement OAuth2 Authorization Response parsing
---
.../core/model/OAuth2Authorization.java | 43 ++++++++++
.../scribejava/core/oauth/OAuth20Service.java | 20 +++++
.../core/oauth/OAuth20ServiceTest.java | 85 +++++++++++++++----
3 files changed, 131 insertions(+), 17 deletions(-)
create mode 100644 scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2Authorization.java
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2Authorization.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2Authorization.java
new file mode 100644
index 000000000..8c99f395b
--- /dev/null
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuth2Authorization.java
@@ -0,0 +1,43 @@
+package com.github.scribejava.core.model;
+
+/**
+ * represents Authorization Response http://tools.ietf.org/html/rfc6749#section-4.1.2
+ *
+ * If the resource owner grants the access request, the authorization server issues an authorization code and delivers
+ * it to the client by adding the following parameters to the query component of the redirection URI using the
+ * "application/x-www-form-urlencoded" format.
+ *
+ */
+public class OAuth2Authorization {
+
+ /**
+ * REQUIRED. The authorization code generated by the authorization server. The authorization code MUST expire
+ * shortly after it is issued to mitigate the risk of leaks. A maximum authorization code lifetime of 10 minutes is
+ * RECOMMENDED. The client MUST NOT use the authorization code more than once. If an authorization code is used more
+ * than once, the authorization server MUST deny the request and SHOULD revoke (when possible) all tokens previously
+ * issued based on that authorization code. The authorization code is bound to the client identifier and redirection
+ * URI.
+ */
+ private String code;
+ /**
+ * REQUIRED if the "state" parameter was present in the client authorization request. The exact value received from
+ * the client.
+ */
+ private String state;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index 086423cbb..2c7f8306b 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -8,6 +8,7 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.AbstractRequest;
import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuth2Authorization;
import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.OAuthConstants;
@@ -216,4 +217,23 @@ public String getAuthorizationUrl(Map additionalParams) {
public DefaultApi20 getApi() {
return api;
}
+
+ public OAuth2Authorization extractAuthorization(String redirectLocation) {
+ final OAuth2Authorization authorization = new OAuth2Authorization();
+ for (String param : redirectLocation.substring(redirectLocation.indexOf('?') + 1).split("&")) {
+ final String[] keyValue = param.split("=");
+ if (keyValue.length == 2) {
+ switch (keyValue[0]) {
+ case "code":
+ authorization.setCode(keyValue[1]);
+ break;
+ case "state":
+ authorization.setState(keyValue[1]);
+ break;
+ default: //just ignore any other param;
+ }
+ }
+ }
+ return authorization;
+ }
}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
index 6b2b09f0b..17c58087f 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
@@ -2,11 +2,13 @@
import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuth2Authorization;
import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.services.Base64Encoder;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
-import org.junit.Assert;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertEquals;
import org.junit.Test;
import java.nio.charset.Charset;
@@ -25,23 +27,23 @@ public void shouldProduceCorrectRequestSync() {
final OAuth2AccessToken token = service.getAccessTokenPasswordGrant("user1", "password1");
final Gson json = new Gson();
- Assert.assertNotNull(token);
+ assertNotNull(token);
final Map map = json.fromJson(token.getRawResponse(), new TypeTokenImpl().getType());
- Assert.assertEquals(OAuth20ServiceUnit.TOKEN, map.get(OAuthConstants.ACCESS_TOKEN));
- Assert.assertEquals(OAuth20ServiceUnit.STATE, map.get(OAuthConstants.STATE));
- Assert.assertEquals(OAuth20ServiceUnit.EXPIRES, map.get("expires_in"));
+ assertEquals(OAuth20ServiceUnit.TOKEN, map.get(OAuthConstants.ACCESS_TOKEN));
+ assertEquals(OAuth20ServiceUnit.STATE, map.get(OAuthConstants.STATE));
+ assertEquals(OAuth20ServiceUnit.EXPIRES, map.get("expires_in"));
final String authorize = Base64Encoder.getInstance()
.encode(String.format("%s:%s", service.getConfig().getApiKey(), service.getConfig().getApiSecret())
.getBytes(Charset.forName("UTF-8")));
- Assert.assertEquals(OAuthConstants.BASIC + " " + authorize, map.get(OAuthConstants.HEADER));
+ assertEquals(OAuthConstants.BASIC + " " + authorize, map.get(OAuthConstants.HEADER));
- Assert.assertEquals("user1", map.get("query-username"));
- Assert.assertEquals("password1", map.get("query-password"));
- Assert.assertEquals("password", map.get("query-grant_type"));
+ assertEquals("user1", map.get("query-username"));
+ assertEquals("password1", map.get("query-password"));
+ assertEquals("password", map.get("query-grant_type"));
}
@Test
@@ -54,23 +56,72 @@ public void shouldProduceCorrectRequestAsync() throws ExecutionException, Interr
final OAuth2AccessToken token = service.getAccessTokenPasswordGrantAsync("user1", "password1", null).get();
final Gson json = new Gson();
- Assert.assertNotNull(token);
+ assertNotNull(token);
final Map map = json.fromJson(token.getRawResponse(), new TypeTokenImpl().getType());
- Assert.assertEquals(OAuth20ServiceUnit.TOKEN, map.get(OAuthConstants.ACCESS_TOKEN));
- Assert.assertEquals(OAuth20ServiceUnit.STATE, map.get(OAuthConstants.STATE));
- Assert.assertEquals(OAuth20ServiceUnit.EXPIRES, map.get("expires_in"));
+ assertEquals(OAuth20ServiceUnit.TOKEN, map.get(OAuthConstants.ACCESS_TOKEN));
+ assertEquals(OAuth20ServiceUnit.STATE, map.get(OAuthConstants.STATE));
+ assertEquals(OAuth20ServiceUnit.EXPIRES, map.get("expires_in"));
final String authorize = Base64Encoder.getInstance()
.encode(String.format("%s:%s", service.getConfig().getApiKey(), service.getConfig().getApiSecret())
.getBytes(Charset.forName("UTF-8")));
- Assert.assertEquals(OAuthConstants.BASIC + " " + authorize, map.get(OAuthConstants.HEADER));
+ assertEquals(OAuthConstants.BASIC + " " + authorize, map.get(OAuthConstants.HEADER));
+
+ assertEquals("user1", map.get("query-username"));
+ assertEquals("password1", map.get("query-password"));
+ assertEquals("password", map.get("query-grant_type"));
+ }
+
+ @Test
+ public void testOAuthExtractAuthorization() {
+ final OAuth20Service service = new ServiceBuilder()
+ .apiKey("your_api_key")
+ .apiSecret("your_api_secret")
+ .build(new OAuth20ApiUnit());
+
+ OAuth2Authorization authorization = service.extractAuthorization("https://cl.ex.com/cb?code=SplxlOB&state=xyz");
+ assertEquals("SplxlOB", authorization.getCode());
+ assertEquals("xyz", authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?state=xyz&code=SplxlOB");
+ assertEquals("SplxlOB", authorization.getCode());
+ assertEquals("xyz", authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?key=value&state=xyz&code=SplxlOB");
+ assertEquals("SplxlOB", authorization.getCode());
+ assertEquals("xyz", authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?state=xyz&code=SplxlOB&key=value&");
+ assertEquals("SplxlOB", authorization.getCode());
+ assertEquals("xyz", authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?code=SplxlOB&state=");
+ assertEquals("SplxlOB", authorization.getCode());
+ assertEquals(null, authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?code=SplxlOB");
+ assertEquals("SplxlOB", authorization.getCode());
+ assertEquals(null, authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?code=");
+ assertEquals(null, authorization.getCode());
+ assertEquals(null, authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?code");
+ assertEquals(null, authorization.getCode());
+ assertEquals(null, authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb?");
+ assertEquals(null, authorization.getCode());
+ assertEquals(null, authorization.getState());
+
+ authorization = service.extractAuthorization("https://cl.ex.com/cb");
+ assertEquals(null, authorization.getCode());
+ assertEquals(null, authorization.getState());
- Assert.assertEquals("user1", map.get("query-username"));
- Assert.assertEquals("password1", map.get("query-password"));
- Assert.assertEquals("password", map.get("query-grant_type"));
}
private static class TypeTokenImpl extends TypeToken> {
From 9dfb671520966df479264f2466c7654eca9580b7 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:05:53 +0300
Subject: [PATCH 035/250] update changelog
---
changelog | 1 +
1 file changed, 1 insertion(+)
diff --git a/changelog b/changelog
index 8edc13ab6..b8bf40849 100644
--- a/changelog
+++ b/changelog
@@ -2,6 +2,7 @@
* add Google Async Exmaple (with bugfix for it to work)
* add OSGI manifest metadata
* apiSecret is not mandatory parameter in config (to use on client sides and other flows without need of the API secret)
+ * implement OAuth2 Authorization Response parsing in the OAuth20Service (to extract code and state from url, useful for Android)
[2.4.0]
* APIs 2.0 can define different endpoints for access token and for refresh token (the same urls by default)
From fbe4ffe953ab8784164b089c9c09ee26d565bbb9 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:18:09 +0300
Subject: [PATCH 036/250] update ok.ru API urls
---
changelog | 1 +
.../scribejava/apis/OdnoklassnikiApi.java | 20 ++++++++++++-------
.../apis/examples/OdnoklassnikiExample.java | 11 ++++++++--
3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/changelog b/changelog
index b8bf40849..512a4b3fe 100644
--- a/changelog
+++ b/changelog
@@ -3,6 +3,7 @@
* add OSGI manifest metadata
* apiSecret is not mandatory parameter in config (to use on client sides and other flows without need of the API secret)
* implement OAuth2 Authorization Response parsing in the OAuth20Service (to extract code and state from url, useful for Android)
+ * update ok.ru API urls, add 'state' support, add refresh token to the example
[2.4.0]
* APIs 2.0 can define different endpoints for access token and for refresh token (the same urls by default)
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java
index de8fdfa8a..0651fe108 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java
@@ -10,8 +10,7 @@
public class OdnoklassnikiApi extends DefaultApi20 {
private static final String AUTHORIZE_URL
- = "http://www.odnoklassniki.ru/oauth/authorize?client_id=%s&response_type=code&redirect_uri=%s";
- private static final String SCOPED_AUTHORIZE_URL = String.format("%s&scope=%%s", AUTHORIZE_URL);
+ = "https://connect.ok.ru/oauth/authorize?client_id=%s&response_type=code&redirect_uri=%s";
protected OdnoklassnikiApi() {
}
@@ -26,19 +25,26 @@ public static OdnoklassnikiApi instance() {
@Override
public String getAccessTokenEndpoint() {
- return "http://api.odnoklassniki.ru/oauth/token.do";
+ return "https://api.ok.ru/oauth/token.do";
}
@Override
public String getAuthorizationUrl(OAuthConfig config) {
Preconditions.checkValidUrl(config.getCallback(),
"Valid url is required for a callback. Odnoklassniki does not support OOB");
+
+ final StringBuilder urlBuilder = new StringBuilder(String.format(AUTHORIZE_URL,
+ config.getApiKey(), OAuthEncoder.encode(config.getCallback())));
+
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()));
+ urlBuilder.append("&scope=").append(OAuthEncoder.encode(config.getScope()));
+ }
+
+ final String state = config.getState();
+ if (state != null) {
+ urlBuilder.append("&state=").append(OAuthEncoder.encode(config.getState()));
}
+ return urlBuilder.toString();
}
@Override
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
index 88fb1ba93..ba88fe131 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
@@ -14,7 +14,7 @@ public abstract class OdnoklassnikiExample {
private static final String NETWORK_NAME = "Odnoklassniki.ru";
private static final String PROTECTED_RESOURCE_URL
- = "http://api.odnoklassniki.ru/api/users/getCurrentUser?application_key=%1$s&format=JSON";
+ = "https://api.ok.ru/api/users/getCurrentUser?application_key=%1$s&format=JSON";
public static void main(String... args) {
// Replace these with your client id and secret
@@ -49,12 +49,19 @@ public static void main(String... args) {
// Trade the Request Token and Verfier for the Access Token
System.out.println("Trading the Request Token for an Access Token...");
- final OAuth2AccessToken accessToken = service.getAccessToken(code);
+ OAuth2AccessToken accessToken = service.getAccessToken(code);
System.out.println("Got the Access Token!");
System.out.println("(if your curious it looks like this: " + accessToken
+ ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
System.out.println();
+ System.out.println("Refreshing the Access Token...");
+ accessToken = service.refreshAccessToken(accessToken.getRefreshToken());
+ System.out.println("Refreshed the Access Token!");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
+ 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, String.format(PROTECTED_RESOURCE_URL, publicKey),
From 6b978a6a684904ab5be824435424ecaf19a53345 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:44:00 +0300
Subject: [PATCH 037/250] [maven-release-plugin] prepare release
scribejava-2.5.0
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 0454b8141..9467288a1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.4.1-SNAPSHOT
+ 2.5.0
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 65b400b77..9f364ceb7 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.4.1-SNAPSHOT
+ 2.5.0
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 22d957e79..b1e96945d 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.4.1-SNAPSHOT
+ 2.5.0
../pom.xml
From 7c1f00a44f75bd07d5af79896e0dac05b7f19c59 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:44:07 +0300
Subject: [PATCH 038/250] [maven-release-plugin] prepare for next development
iteration
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9467288a1..30308eadf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.5.0
+ 2.5.1-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 9f364ceb7..e50a60e51 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.0
+ 2.5.1-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index b1e96945d..62353ec0e 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.0
+ 2.5.1-SNAPSHOT
../pom.xml
From 826be08321647c3feced154871db38dd00d0c055 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:48:47 +0300
Subject: [PATCH 039/250] Revert "[maven-release-plugin] prepare for next
development iteration"
This reverts commit 7c1f00a44f75bd07d5af79896e0dac05b7f19c59.
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 30308eadf..9467288a1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.5.1-SNAPSHOT
+ 2.5.0
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index e50a60e51..9f364ceb7 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.1-SNAPSHOT
+ 2.5.0
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 62353ec0e..b1e96945d 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.1-SNAPSHOT
+ 2.5.0
../pom.xml
From 852bc7efed6907cb04de559b863fd5ac7b5d240e Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:48:54 +0300
Subject: [PATCH 040/250] Revert "[maven-release-plugin] prepare release
scribejava-2.5.0"
This reverts commit 6b978a6a684904ab5be824435424ecaf19a53345.
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9467288a1..0454b8141 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.5.0
+ 2.4.1-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 9f364ceb7..65b400b77 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.0
+ 2.4.1-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index b1e96945d..22d957e79 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.0
+ 2.4.1-SNAPSHOT
../pom.xml
From b73c42d4a335b99e280e7310172de0c0a00a4ef5 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:45:54 +0300
Subject: [PATCH 041/250] prepare 2.5.2 release
---
README.md | 4 ++--
changelog | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 0ca58eb3a..82cca0d59 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@ You can pull ScribeJava from the central maven repository, just add these to you
com.github.scribejava
scribejava-apis
- 2.4.0
+ 2.5.2
```
@@ -87,7 +87,7 @@ And in case you need just core classes (that's it, without any external API (FB,
com.github.scribejava
scribejava-core
- 2.4.0
+ 2.5.2
```
diff --git a/changelog b/changelog
index 512a4b3fe..15e23875b 100644
--- a/changelog
+++ b/changelog
@@ -1,4 +1,4 @@
-[SNAPSHOT]
+[2.5.2]
* add Google Async Exmaple (with bugfix for it to work)
* add OSGI manifest metadata
* apiSecret is not mandatory parameter in config (to use on client sides and other flows without need of the API secret)
From af97361e4f9c26c9c3fba29e7328c25e9ef1e651 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:50:58 +0300
Subject: [PATCH 042/250] [maven-release-plugin] prepare release
scribejava-2.5.2
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 0454b8141..780711e7c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.4.1-SNAPSHOT
+ 2.5.2
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 65b400b77..07c92418f 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.4.1-SNAPSHOT
+ 2.5.2
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 22d957e79..878655572 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.4.1-SNAPSHOT
+ 2.5.2
../pom.xml
From 312579950b88f8c1f9f1af74e54810952915ca87 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 28 Mar 2016 15:51:05 +0300
Subject: [PATCH 043/250] [maven-release-plugin] prepare for next development
iteration
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 780711e7c..94d0f1345 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.5.2
+ 2.5.3-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 07c92418f..9bdd90b82 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.2
+ 2.5.3-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 878655572..bf13322cc 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.2
+ 2.5.3-SNAPSHOT
../pom.xml
From f8d32379e13e8e1c64e1280db5aa95fe473bad0c Mon Sep 17 00:00:00 2001
From: Ozhiganov Valery
Date: Thu, 31 Mar 2016 11:10:58 +0300
Subject: [PATCH 044/250] Odnoklassniki Example improvements
---
.../scribejava/apis/examples/OdnoklassnikiExample.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
index ba88fe131..8f67a49ae 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
@@ -18,14 +18,14 @@ public abstract class OdnoklassnikiExample {
public static void main(String... args) {
// Replace these with your client id and secret
- final String clientId = "your client id";
- final String publicKey = "your api secret";
- final String clientSecret = "your client secret";
+ final String clientId = "your api client id";
+ final String publicKey = "your api public key";
+ final String secretKey = "your api secret key";
final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
- .apiSecret(clientSecret)
- .scope("VALUABLE ACCESS")
+ .apiSecret(secretKey)
+ .scope("VALUABLE_ACCESS")
.grantType(OAuthConstants.AUTHORIZATION_CODE)
.callback("http://your.site.com/callback")
.build(OdnoklassnikiApi.instance());
From 3a5f5034f1e6d0170ebb34f61d792b20a5b9b1b3 Mon Sep 17 00:00:00 2001
From: Ozhiganov Valery
Date: Thu, 31 Mar 2016 11:40:22 +0300
Subject: [PATCH 045/250] fix
---
.../github/scribejava/apis/examples/OdnoklassnikiExample.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
index 8f67a49ae..6cdc33e7c 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
@@ -25,7 +25,6 @@ public static void main(String... args) {
final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
.apiSecret(secretKey)
- .scope("VALUABLE_ACCESS")
.grantType(OAuthConstants.AUTHORIZATION_CODE)
.callback("http://your.site.com/callback")
.build(OdnoklassnikiApi.instance());
From f2b1185edda92310a79b4edb5c3006f42329c875 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 13 Apr 2016 16:27:52 +0300
Subject: [PATCH 046/250] do not set Content-Type twice
---
.../scribejava/core/model/OAuthRequestAsync.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
index f01ff1776..1081f0b68 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
@@ -53,20 +53,23 @@ public Future sendAsync(OAuthAsyncRequestCallback callback, ResponseCo
final String completeUrl = getCompleteUrl();
final AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
final AsyncHttpClient asyncHttpClient = service.getAsyncHttpClient();
+ final Map headers = getHeaders();
switch (getVerb()) {
case GET:
boundRequestBuilder = asyncHttpClient.prepareGet(completeUrl);
break;
case POST:
- boundRequestBuilder = asyncHttpClient.preparePost(completeUrl)
- .addHeader(CONTENT_TYPE, DEFAULT_CONTENT_TYPE)
- .setBody(getBodyContents());
+ AsyncHttpClient.BoundRequestBuilder requestBuilder = asyncHttpClient.preparePost(completeUrl);
+ if (!headers.containsKey(CONTENT_TYPE)) {
+ requestBuilder = requestBuilder.addHeader(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
+ }
+ boundRequestBuilder = requestBuilder.setBody(getBodyContents());
break;
default:
throw new IllegalArgumentException("message build error: unknown verb type");
}
- for (Map.Entry header : getHeaders().entrySet()) {
+ for (Map.Entry header : headers.entrySet()) {
boundRequestBuilder.addHeader(header.getKey(), header.getValue());
}
From 8753b67d0b45e466f25f6736f0126283b25f8e67 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 15 Apr 2016 10:59:32 +0300
Subject: [PATCH 047/250] prepare 2.5.3 release
---
README.md | 4 ++--
changelog | 4 ++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 82cca0d59..8f2bb934a 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@ You can pull ScribeJava from the central maven repository, just add these to you
com.github.scribejava
scribejava-apis
- 2.5.2
+ 2.5.3
```
@@ -87,7 +87,7 @@ And in case you need just core classes (that's it, without any external API (FB,
com.github.scribejava
scribejava-core
- 2.5.2
+ 2.5.3
```
diff --git a/changelog b/changelog
index 15e23875b..eb854075a 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+[2.5.3]
+ * fix - do not send two Content-Type header in async requests
+ * improve OK example
+
[2.5.2]
* add Google Async Exmaple (with bugfix for it to work)
* add OSGI manifest metadata
From d5f0dcef7c88c759c596e4d4d5e3e643682cb148 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 15 Apr 2016 11:03:11 +0300
Subject: [PATCH 048/250] [maven-release-plugin] prepare release
scribejava-2.5.3
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 94d0f1345..f044a7c08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.5.3-SNAPSHOT
+ 2.5.3
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 9bdd90b82..e547680be 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.3-SNAPSHOT
+ 2.5.3
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index bf13322cc..735bb1f0f 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.3-SNAPSHOT
+ 2.5.3
../pom.xml
From a74e9a78e402a8ca91148aee7f741efbb95cf277 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 15 Apr 2016 11:03:16 +0300
Subject: [PATCH 049/250] [maven-release-plugin] prepare for next development
iteration
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index f044a7c08..be78f0cc2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.5.3
+ 2.5.4-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index e547680be..958bf5563 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.3
+ 2.5.4-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 735bb1f0f..50f5e9fc0 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.3
+ 2.5.4-SNAPSHOT
../pom.xml
From fe5f0f39c7427e6e07a032338ab7543f381d587a Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Fri, 15 Apr 2016 16:27:56 +0300
Subject: [PATCH 050/250] update ning and checkstyle
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index be78f0cc2..a87a5c4bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -96,7 +96,7 @@
com.ning
async-http-client
- 1.9.36
+ 1.9.38
provided
@@ -205,7 +205,7 @@
com.puppycrawl.tools
checkstyle
- 6.16.1
+ 6.17
From 2751f5293b75a5f62e2265802508fb721e8d72d7 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 16 May 2016 17:53:45 +0300
Subject: [PATCH 051/250] simplify async/sync usages
---
changelog | 3 +
.../apis/examples/FacebookAsyncExample.java | 4 +-
.../apis/examples/Google20AsyncExample.java | 4 +-
.../apis/examples/MailruAsyncExample.java | 4 +-
.../core/builder/AbstractServiceBuilder.java | 185 ------------------
.../core/builder/ServiceBuilder.java | 158 ++++++++++++++-
.../core/builder/ServiceBuilderAsync.java | 38 ----
.../scribejava/core/model/OAuthConfig.java | 54 +++--
.../core/model/OAuthConfigAsync.java | 33 ----
.../scribejava/core/oauth/OAuthService.java | 30 +--
10 files changed, 210 insertions(+), 303 deletions(-)
delete mode 100644 scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
delete mode 100644 scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilderAsync.java
delete mode 100644 scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfigAsync.java
diff --git a/changelog b/changelog
index eb854075a..dad577932 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+[SNAPSHOT]
+ * simplify async/sync usages
+
[2.5.3]
* fix - do not send two Content-Type header in async requests
* improve OK example
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
index e95fe7ab2..3768394a7 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
@@ -5,7 +5,7 @@
import java.util.Scanner;
import java.util.concurrent.ExecutionException;
import com.github.scribejava.apis.FacebookApi;
-import com.github.scribejava.core.builder.ServiceBuilderAsync;
+import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.model.ForceTypeOfHttpRequest;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthRequestAsync;
@@ -33,7 +33,7 @@ public static void main(String... args) throws InterruptedException, ExecutionEx
.setReadTimeout(1_000)
.build();
- final OAuth20Service service = new ServiceBuilderAsync()
+ final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
.apiSecret(clientSecret)
.state(secretState)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncExample.java
index 74e4ab708..f8b021041 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncExample.java
@@ -3,7 +3,7 @@
import java.util.Random;
import java.util.Scanner;
import com.github.scribejava.apis.GoogleApi20;
-import com.github.scribejava.core.builder.ServiceBuilderAsync;
+import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.model.ForceTypeOfHttpRequest;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthRequestAsync;
@@ -35,7 +35,7 @@ public static void main(String... args) throws InterruptedException, ExecutionEx
.setReadTimeout(1_000)
.build();
- final OAuth20Service service = new ServiceBuilderAsync()
+ final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
.apiSecret(clientSecret)
.scope("profile") // replace with desired scope
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
index 10a787625..26a61a456 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
@@ -4,7 +4,7 @@
import java.util.Scanner;
import java.util.concurrent.ExecutionException;
import com.github.scribejava.apis.MailruApi;
-import com.github.scribejava.core.builder.ServiceBuilderAsync;
+import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthRequestAsync;
import com.github.scribejava.core.model.Response;
@@ -30,7 +30,7 @@ public static void main(String... args) throws InterruptedException, ExecutionEx
.setReadTimeout(10_000)
.build();
- final OAuth20Service service = new ServiceBuilderAsync()
+ final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
.apiSecret(clientSecret)
.callback("http://www.example.com/oauth_callback/")
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
deleted file mode 100644
index cd8fc487e..000000000
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/AbstractServiceBuilder.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package com.github.scribejava.core.builder;
-
-import com.github.scribejava.core.builder.api.BaseApi;
-import com.github.scribejava.core.model.OAuthConfig;
-import java.io.OutputStream;
-import com.github.scribejava.core.model.OAuthConstants;
-import com.github.scribejava.core.model.SignatureType;
-import com.github.scribejava.core.oauth.OAuthService;
-import com.github.scribejava.core.utils.Preconditions;
-
-abstract class AbstractServiceBuilder> {
-
- private String callback;
- private String apiKey;
- private String apiSecret;
- private String scope;
- private String state;
- private SignatureType signatureType;
- private OutputStream debugStream;
- private String grantType;
- private String responseType = "code";
-
- AbstractServiceBuilder() {
- this.callback = OAuthConstants.OUT_OF_BAND;
- this.signatureType = SignatureType.Header;
- }
-
- /**
- * 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
- */
- @SuppressWarnings("unchecked")
- public T callback(String callback) {
- Preconditions.checkNotNull(callback, "Callback can't be null");
- this.callback = callback;
- return (T) this;
- }
-
- /**
- * Configures the api key
- *
- * @param apiKey The api key for your application
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- @SuppressWarnings("unchecked")
- public T apiKey(String apiKey) {
- Preconditions.checkEmptyString(apiKey, "Invalid Api key");
- this.apiKey = apiKey;
- return (T) this;
- }
-
- /**
- * Configures the api secret
- *
- * @param apiSecret The api secret for your application
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- @SuppressWarnings("unchecked")
- public T apiSecret(String apiSecret) {
- Preconditions.checkEmptyString(apiSecret, "Invalid Api secret");
- this.apiSecret = apiSecret;
- return (T) 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
- */
- @SuppressWarnings("unchecked")
- public T scope(String scope) {
- Preconditions.checkEmptyString(scope, "Invalid OAuth scope");
- this.scope = scope;
- return (T) this;
- }
-
- /**
- * Configures the anti forgery session state. This is available in some APIs (like Google's).
- *
- * @param state The OAuth state
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- @SuppressWarnings("unchecked")
- public T state(String state) {
- Preconditions.checkEmptyString(state, "Invalid OAuth state");
- this.state = state;
- return (T) this;
- }
-
- /**
- * Configures the signature type, choose between header, querystring, etc. Defaults to Header
- *
- * @param type SignatureType
- * @return the {@link ServiceBuilder} instance for method chaining
- */
- @SuppressWarnings("unchecked")
- public T signatureType(SignatureType type) {
- Preconditions.checkNotNull(type, "Signature type can't be null");
- this.signatureType = type;
- return (T) this;
- }
-
- @SuppressWarnings("unchecked")
- public T debugStream(OutputStream stream) {
- Preconditions.checkNotNull(stream, "debug stream can't be null");
- this.debugStream = stream;
- return (T) this;
- }
-
- @SuppressWarnings("unchecked")
- public T grantType(String grantType) {
- Preconditions.checkEmptyString(grantType, "Invalid OAuth grantType");
- this.grantType = grantType;
- return (T) this;
- }
-
- @SuppressWarnings("unchecked")
- public T responseType(String responseType) {
- Preconditions.checkEmptyString(responseType, "Invalid OAuth responseType");
- this.responseType = responseType;
- return (T) this;
- }
-
- @SuppressWarnings("unchecked")
- public T debug() {
- debugStream(System.out);
- return (T) this;
- }
-
- public void checkPreconditions() {
- Preconditions.checkEmptyString(apiKey, "You must provide an api key");
- }
-
- public String getCallback() {
- return callback;
- }
-
- public String getApiKey() {
- return apiKey;
- }
-
- public String getApiSecret() {
- return apiSecret;
- }
-
- public String getScope() {
- return scope;
- }
-
- public String getState() {
- return state;
- }
-
- public SignatureType getSignatureType() {
- return signatureType;
- }
-
- public OutputStream getDebugStream() {
- return debugStream;
- }
-
- public String getGrantType() {
- return grantType;
- }
-
- public String getResponseType() {
- return responseType;
- }
-
- protected abstract OAuthConfig createConfig();
-
- /**
- * Returns the fully configured {@link S}
- *
- * @param OAuthService implementation (OAuth1/OAuth2/any API specific)
- * @param api will build Service for this API
- * @return fully configured {@link S}
- */
- public S build(BaseApi api) {
- return api.createService(createConfig());
- }
-}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
index 7d24dbec9..93ee34526 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
@@ -1,17 +1,132 @@
package com.github.scribejava.core.builder;
+import com.github.scribejava.core.builder.api.BaseApi;
import com.github.scribejava.core.model.OAuthConfig;
+import java.io.OutputStream;
+import com.github.scribejava.core.model.OAuthConstants;
+import com.github.scribejava.core.model.SignatureType;
import com.github.scribejava.core.oauth.OAuthService;
import com.github.scribejava.core.utils.Preconditions;
+import com.ning.http.client.AsyncHttpClientConfig;
/**
* Implementation of the Builder pattern, with a fluent interface that creates a {@link OAuthService}
*/
-public class ServiceBuilder extends AbstractServiceBuilder {
+public class ServiceBuilder {
+ private String callback;
+ private String apiKey;
+ private String apiSecret;
+ private String scope;
+ private String state;
+ private SignatureType signatureType;
+ private OutputStream debugStream;
+ private String grantType;
+ private String responseType = "code";
+
+ //sync version only
private Integer connectTimeout;
private Integer readTimeout;
+ //async version only
+ private AsyncHttpClientConfig asyncHttpClientConfig;
+ private String asyncHttpProviderClassName;
+
+ public ServiceBuilder() {
+ callback = OAuthConstants.OUT_OF_BAND;
+ signatureType = SignatureType.Header;
+ }
+
+ /**
+ * 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 anti forgery session state. This is available in some APIs (like Google's).
+ *
+ * @param state The OAuth state
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder state(String state) {
+ Preconditions.checkEmptyString(state, "Invalid OAuth state");
+ this.state = state;
+ return this;
+ }
+
+ /**
+ * Configures the signature type, choose between header, querystring, etc. Defaults to Header
+ *
+ * @param signatureType SignatureType
+ * @return the {@link ServiceBuilder} instance for method chaining
+ */
+ public ServiceBuilder signatureType(SignatureType signatureType) {
+ Preconditions.checkNotNull(signatureType, "Signature type can't be null");
+ this.signatureType = signatureType;
+ return this;
+ }
+
+ public ServiceBuilder debugStream(OutputStream debugStream) {
+ Preconditions.checkNotNull(debugStream, "debug stream can't be null");
+ this.debugStream = debugStream;
+ return this;
+ }
+
+ public ServiceBuilder grantType(String grantType) {
+ Preconditions.checkEmptyString(grantType, "Invalid OAuth grantType");
+ this.grantType = grantType;
+ return this;
+ }
+
+ public ServiceBuilder responseType(String responseType) {
+ Preconditions.checkEmptyString(responseType, "Invalid OAuth responseType");
+ this.responseType = responseType;
+ return this;
+ }
+
public ServiceBuilder connectTimeout(Integer connectTimeout) {
Preconditions.checkNotNull(connectTimeout, "Connection timeout can't be null");
this.connectTimeout = connectTimeout;
@@ -24,12 +139,39 @@ public ServiceBuilder readTimeout(Integer readTimeout) {
return this;
}
- @Override
- protected OAuthConfig createConfig() {
- super.checkPreconditions();
- final OAuthConfig config = new OAuthConfig(getApiKey(), getApiSecret(), getCallback(), getSignatureType(),
- getScope(), getDebugStream(), connectTimeout, readTimeout, getGrantType(), getState(),
- getResponseType());
- return config;
+ public ServiceBuilder asyncHttpClientConfig(AsyncHttpClientConfig asyncHttpClientConfig) {
+ Preconditions.checkNotNull(asyncHttpClientConfig, "asyncHttpClientConfig can't be null");
+ this.asyncHttpClientConfig = asyncHttpClientConfig;
+ return this;
+ }
+
+ public ServiceBuilder asyncHttpProviderClassName(String asyncHttpProviderClassName) {
+ this.asyncHttpProviderClassName = asyncHttpProviderClassName;
+ return this;
+ }
+
+ public ServiceBuilder debug() {
+ debugStream(System.out);
+ return this;
+ }
+
+ public void checkPreconditions() {
+ Preconditions.checkEmptyString(apiKey, "You must provide an api key");
+ }
+ private OAuthConfig createConfig() {
+ checkPreconditions();
+ return new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream, grantType, state,
+ responseType, connectTimeout, readTimeout, asyncHttpClientConfig, asyncHttpProviderClassName);
+ }
+
+ /**
+ * Returns the fully configured {@link S}
+ *
+ * @param OAuthService implementation (OAuth1/OAuth2/any API specific)
+ * @param api will build Service for this API
+ * @return fully configured {@link S}
+ */
+ public S build(BaseApi api) {
+ return api.createService(createConfig());
}
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilderAsync.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilderAsync.java
deleted file mode 100644
index 192405b6a..000000000
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilderAsync.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.github.scribejava.core.builder;
-
-import com.ning.http.client.AsyncHttpClientConfig;
-import com.github.scribejava.core.model.OAuthConfigAsync;
-import com.github.scribejava.core.utils.Preconditions;
-
-public class ServiceBuilderAsync extends AbstractServiceBuilder {
-
- private AsyncHttpClientConfig asyncHttpClientConfig;
- private String asyncHttpProviderClassName;
-
- public ServiceBuilderAsync asyncHttpClientConfig(AsyncHttpClientConfig asyncHttpClientConfig) {
- Preconditions.checkNotNull(asyncHttpClientConfig, "asyncHttpClientConfig can't be null");
- this.asyncHttpClientConfig = asyncHttpClientConfig;
- return this;
- }
-
- @Override
- public void checkPreconditions() {
- super.checkPreconditions();
- Preconditions.checkNotNull(asyncHttpClientConfig, "You must provide an asyncHttpClientConfig");
- }
-
- @Override
- protected OAuthConfigAsync createConfig() {
- checkPreconditions();
- final OAuthConfigAsync configAsync = new OAuthConfigAsync(getApiKey(), getApiSecret(), getCallback(),
- getSignatureType(), getScope(), getGrantType(), getState(), getResponseType(), getDebugStream(),
- asyncHttpClientConfig);
- configAsync.setAsyncHttpProviderClassName(asyncHttpProviderClassName);
- return configAsync;
- }
-
- public ServiceBuilderAsync asyncHttpProviderClassName(String asyncHttpProviderClassName) {
- this.asyncHttpProviderClassName = asyncHttpProviderClassName;
- return this;
- }
-}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
index 93231ddb8..a363cf915 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
@@ -1,5 +1,6 @@
package com.github.scribejava.core.model;
+import com.ning.http.client.AsyncHttpClientConfig;
import java.io.IOException;
import java.io.OutputStream;
@@ -15,29 +16,37 @@ public class OAuthConfig {
private final String scope;
private final String grantType;
private final OutputStream debugStream;
- private final Integer connectTimeout;
- private final Integer readTimeout;
private final String state;
private final String responseType;
+ //sync only version
+ private final Integer connectTimeout;
+ private final Integer readTimeout;
+
+ //async only version
+ private final AsyncHttpClientConfig asyncHttpClientConfig;
+ private final String asyncHttpProviderClassName;
+
public OAuthConfig(String key, String secret) {
- this(key, secret, null, null, null, null, null, null, null, null, null);
+ this(key, secret, null, null, null, null, null, null, null, null, null, null, null);
}
- public OAuthConfig(String key, String secret, String callback, SignatureType type, String scope,
- OutputStream stream, Integer connectTimeout, Integer readTimeout, String grantType, String state,
- String responseType) {
- this.apiKey = key;
- this.apiSecret = secret;
+ public OAuthConfig(String apiKey, String apiSecret, String callback, SignatureType signatureType, String scope,
+ OutputStream debugStream, String grantType, String state, String responseType, Integer connectTimeout,
+ Integer readTimeout, AsyncHttpClientConfig asyncHttpClientConfig, String asyncHttpProviderClassName) {
+ this.apiKey = apiKey;
+ this.apiSecret = apiSecret;
this.callback = callback;
- this.signatureType = type;
+ this.signatureType = signatureType;
this.scope = scope;
- this.debugStream = stream;
+ this.debugStream = debugStream;
this.connectTimeout = connectTimeout;
this.readTimeout = readTimeout;
this.grantType = grantType;
this.state = state;
this.responseType = responseType;
+ this.asyncHttpClientConfig = asyncHttpClientConfig;
+ this.asyncHttpProviderClassName = asyncHttpProviderClassName;
}
public String getApiKey() {
@@ -72,12 +81,12 @@ public boolean hasGrantType() {
return grantType != null;
}
- public Integer getConnectTimeout() {
- return connectTimeout;
+ public String getState() {
+ return state;
}
- public Integer getReadTimeout() {
- return readTimeout;
+ public String getResponseType() {
+ return responseType;
}
public void log(String message) {
@@ -91,11 +100,20 @@ public void log(String message) {
}
}
- public String getState() {
- return state;
+ public Integer getConnectTimeout() {
+ return connectTimeout;
}
- public String getResponseType() {
- return responseType;
+ public Integer getReadTimeout() {
+ return readTimeout;
+ }
+
+ public AsyncHttpClientConfig getAsyncHttpClientConfig() {
+ return asyncHttpClientConfig;
}
+
+ public String getAsyncHttpProviderClassName() {
+ return asyncHttpProviderClassName;
+ }
+
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfigAsync.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfigAsync.java
deleted file mode 100644
index 346993b21..000000000
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfigAsync.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.github.scribejava.core.model;
-
-import com.ning.http.client.AsyncHttpClientConfig;
-import java.io.OutputStream;
-
-public class OAuthConfigAsync extends OAuthConfig {
-
- private AsyncHttpClientConfig asyncHttpClientConfig;
- private String asyncHttpProviderClassName;
-
- public OAuthConfigAsync(String key, String secret) {
- super(key, secret);
- }
-
- public OAuthConfigAsync(String key, String secret, String callback, SignatureType type, String scope,
- String grantType, String state, String responseType, OutputStream stream,
- AsyncHttpClientConfig asyncHttpClientConfig) {
- super(key, secret, callback, type, scope, stream, null, null, grantType, state, responseType);
- this.asyncHttpClientConfig = asyncHttpClientConfig;
- }
-
- public AsyncHttpClientConfig getAsyncHttpClientConfig() {
- return asyncHttpClientConfig;
- }
-
- public void setAsyncHttpProviderClassName(String asyncHttpProviderClassName) {
- this.asyncHttpProviderClassName = asyncHttpProviderClassName;
- }
-
- public String getAsyncHttpProviderClassName() {
- return asyncHttpProviderClassName;
- }
-}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
index ad7c1d4b4..3b0e1870e 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
@@ -4,8 +4,8 @@
import com.github.scribejava.core.exceptions.OAuthException;
import com.github.scribejava.core.model.ForceTypeOfHttpRequest;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConfigAsync;
import com.github.scribejava.core.model.ScribeJavaConfig;
+import com.ning.http.client.AsyncHttpClientConfig;
/**
* The main ScribeJava object.
@@ -15,31 +15,31 @@
public abstract class OAuthService {
private final OAuthConfig config;
- private AsyncHttpClient asyncHttpClient;
+ private final AsyncHttpClient asyncHttpClient;
public OAuthService(OAuthConfig config) {
this.config = config;
final ForceTypeOfHttpRequest forceTypeOfHttpRequest = ScribeJavaConfig.getForceTypeOfHttpRequests();
- if (config instanceof OAuthConfigAsync) {
+ final AsyncHttpClientConfig asyncHttpClientConfig = config.getAsyncHttpClientConfig();
+ if (asyncHttpClientConfig == null) {
+ if (ForceTypeOfHttpRequest.FORCE_ASYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
+ throw new OAuthException("Cannot use sync operations, only async");
+ }
+ if (ForceTypeOfHttpRequest.PREFER_ASYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
+ config.log("Cannot use sync operations, only async");
+ }
+ asyncHttpClient = null;
+ } else {
if (ForceTypeOfHttpRequest.FORCE_SYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
throw new OAuthException("Cannot use async operations, only sync");
}
if (ForceTypeOfHttpRequest.PREFER_SYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
config.log("Cannot use async operations, only sync");
}
- final OAuthConfigAsync asyncConfig = (OAuthConfigAsync) config;
- final String asyncHttpProviderClassName = asyncConfig.getAsyncHttpProviderClassName();
+ final String asyncHttpProviderClassName = config.getAsyncHttpProviderClassName();
- asyncHttpClient = asyncHttpProviderClassName == null
- ? new AsyncHttpClient(asyncConfig.getAsyncHttpClientConfig())
- : new AsyncHttpClient(asyncHttpProviderClassName, asyncConfig.getAsyncHttpClientConfig());
- } else {
- if (ForceTypeOfHttpRequest.FORCE_ASYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
- throw new OAuthException("Cannot use sync operations, only async");
- }
- if (ForceTypeOfHttpRequest.PREFER_ASYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
- config.log("Cannot use sync operations, only async");
- }
+ asyncHttpClient = asyncHttpProviderClassName == null ? new AsyncHttpClient(asyncHttpClientConfig)
+ : new AsyncHttpClient(asyncHttpProviderClassName, asyncHttpClientConfig);
}
}
From c6d55483e117dfb8a5f8cc2353c5dec4d3c1cb00 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 16 May 2016 17:53:45 +0300
Subject: [PATCH 052/250] add optional "User-Agent" config option to use while
making http calls
---
changelog | 1 +
.../core/builder/ServiceBuilder.java | 9 ++++++++-
.../scribejava/core/model/OAuthConfig.java | 18 ++++++++++++------
.../scribejava/core/model/OAuthConstants.java | 4 ++++
.../scribejava/core/model/OAuthRequest.java | 4 ++++
.../core/model/OAuthRequestAsync.java | 7 ++++++-
6 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/changelog b/changelog
index dad577932..b79af6899 100644
--- a/changelog
+++ b/changelog
@@ -1,5 +1,6 @@
[SNAPSHOT]
* simplify async/sync usages
+ * add optional "User-Agent" config option to use while making http calls
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
index 93ee34526..57bd54e96 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
@@ -23,6 +23,7 @@ public class ServiceBuilder {
private OutputStream debugStream;
private String grantType;
private String responseType = "code";
+ private String userAgent;
//sync version only
private Integer connectTimeout;
@@ -150,6 +151,11 @@ public ServiceBuilder asyncHttpProviderClassName(String asyncHttpProviderClassNa
return this;
}
+ public ServiceBuilder userAgent(String userAgent) {
+ this.userAgent = userAgent;
+ return this;
+ }
+
public ServiceBuilder debug() {
debugStream(System.out);
return this;
@@ -161,7 +167,8 @@ public void checkPreconditions() {
private OAuthConfig createConfig() {
checkPreconditions();
return new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream, grantType, state,
- responseType, connectTimeout, readTimeout, asyncHttpClientConfig, asyncHttpProviderClassName);
+ responseType, userAgent, connectTimeout, readTimeout, asyncHttpClientConfig,
+ asyncHttpProviderClassName);
}
/**
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
index a363cf915..eba9ddeba 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
@@ -18,6 +18,7 @@ public class OAuthConfig {
private final OutputStream debugStream;
private final String state;
private final String responseType;
+ private final String userAgent;
//sync only version
private final Integer connectTimeout;
@@ -28,23 +29,25 @@ public class OAuthConfig {
private final String asyncHttpProviderClassName;
public OAuthConfig(String key, String secret) {
- this(key, secret, null, null, null, null, null, null, null, null, null, null, null);
+ this(key, secret, null, null, null, null, null, null, null, null, null, null, null, null);
}
public OAuthConfig(String apiKey, String apiSecret, String callback, SignatureType signatureType, String scope,
- OutputStream debugStream, String grantType, String state, String responseType, Integer connectTimeout,
- Integer readTimeout, AsyncHttpClientConfig asyncHttpClientConfig, String asyncHttpProviderClassName) {
+ OutputStream debugStream, String grantType, String state, String responseType, String userAgent,
+ Integer connectTimeout, Integer readTimeout, AsyncHttpClientConfig asyncHttpClientConfig,
+ String asyncHttpProviderClassName) {
this.apiKey = apiKey;
this.apiSecret = apiSecret;
this.callback = callback;
this.signatureType = signatureType;
this.scope = scope;
this.debugStream = debugStream;
- this.connectTimeout = connectTimeout;
- this.readTimeout = readTimeout;
this.grantType = grantType;
this.state = state;
this.responseType = responseType;
+ this.userAgent = userAgent;
+ this.connectTimeout = connectTimeout;
+ this.readTimeout = readTimeout;
this.asyncHttpClientConfig = asyncHttpClientConfig;
this.asyncHttpProviderClassName = asyncHttpProviderClassName;
}
@@ -89,6 +92,10 @@ public String getResponseType() {
return responseType;
}
+ public String getUserAgent() {
+ return userAgent;
+ }
+
public void log(String message) {
if (debugStream != null) {
message += '\n';
@@ -115,5 +122,4 @@ public AsyncHttpClientConfig getAsyncHttpClientConfig() {
public String getAsyncHttpProviderClassName() {
return asyncHttpProviderClassName;
}
-
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
index 687970171..d328e2242 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
@@ -35,4 +35,8 @@ public interface OAuthConstants {
String STATE = "state";
String USERNAME = "username";
String PASSWORD = "password";
+
+ //not OAuth specific
+ String USER_AGENT_HEADER_NAME = "User-Agent";
+
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequest.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequest.java
index 66a36415a..230cd15b9 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequest.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequest.java
@@ -70,6 +70,10 @@ void addHeaders() {
for (Map.Entry entry : getHeaders().entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
+ final String userAgent = getService().getConfig().getUserAgent();
+ if (userAgent != null) {
+ connection.setRequestProperty(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
+ }
}
void addBody(byte[] content) throws IOException {
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
index 1081f0b68..fc422e8e6 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
@@ -47,8 +47,9 @@ public Future sendAsync(OAuthAsyncRequestCallback callback, ResponseCo
throw new OAuthException("Cannot use async operations, only sync");
}
final OAuthService service = getService();
+ final OAuthConfig config = service.getConfig();
if (ForceTypeOfHttpRequest.PREFER_SYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
- service.getConfig().log("Cannot use async operations, only sync");
+ config.log("Cannot use async operations, only sync");
}
final String completeUrl = getCompleteUrl();
final AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
@@ -72,6 +73,10 @@ public Future sendAsync(OAuthAsyncRequestCallback callback, ResponseCo
for (Map.Entry header : headers.entrySet()) {
boundRequestBuilder.addHeader(header.getKey(), header.getValue());
}
+ final String userAgent = config.getUserAgent();
+ if (userAgent != null) {
+ boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
+ }
if (proxyServer != null) {
boundRequestBuilder.setProxyServer(proxyServer);
From 53fbad022a901425fb5de8d1bd65d3d7a7afa785 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 16 May 2016 19:04:07 +0300
Subject: [PATCH 053/250] refactor usage of grant_type
[authorization_code|refresh_token|password|etc]
---
changelog | 1 +
.../scribejava/apis/ConstantContactApi2.java | 3 +--
.../scribejava/apis/Foursquare2Api.java | 3 +--
.../github/scribejava/apis/GoogleApi20.java | 7 ------
.../github/scribejava/apis/KaixinApi20.java | 3 +--
.../com/github/scribejava/apis/LiveApi.java | 3 +--
.../github/scribejava/apis/PinterestApi.java | 3 +--
.../com/github/scribejava/apis/RenrenApi.java | 3 +--
.../scribejava/apis/SinaWeiboApi20.java | 3 +--
.../com/github/scribejava/apis/ViadeoApi.java | 3 +--
.../apis/service/GoogleOAuthServiceImpl.java | 23 -------------------
.../apis/service/LinkedIn20ServiceImpl.java | 10 --------
.../apis/service/MailruOAuthServiceImpl.java | 10 --------
.../scribejava/apis/examples/HHExample.java | 1 -
.../apis/examples/OdnoklassnikiExample.java | 2 --
.../apis/examples/TutByExample.java | 2 --
.../core/builder/ServiceBuilder.java | 12 ++--------
.../scribejava/core/model/OAuthConfig.java | 17 +++-----------
.../scribejava/core/oauth/OAuth20Service.java | 4 +---
19 files changed, 15 insertions(+), 98 deletions(-)
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/service/GoogleOAuthServiceImpl.java
diff --git a/changelog b/changelog
index b79af6899..61683c6d3 100644
--- a/changelog
+++ b/changelog
@@ -1,6 +1,7 @@
[SNAPSHOT]
* simplify async/sync usages
* add optional "User-Agent" config option to use while making http calls
+ * refactor usage of grant_type [authorization_code|refresh_token|password|etc]
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
index 3dd0af0a2..b0bbb59eb 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
@@ -6,7 +6,6 @@
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.utils.OAuthEncoder;
public class ConstantContactApi2 extends DefaultApi20 {
@@ -28,7 +27,7 @@ public static ConstantContactApi2 instance() {
@Override
public String getAccessTokenEndpoint() {
- return "https://oauth2.constantcontact.com/oauth2/oauth/token?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://oauth2.constantcontact.com/oauth2/oauth/token";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java
index 2e65672f0..0fc29de2b 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java
@@ -2,7 +2,6 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.utils.OAuthEncoder;
import com.github.scribejava.core.utils.Preconditions;
@@ -30,7 +29,7 @@ public Verb getAccessTokenVerb() {
@Override
public String getAccessTokenEndpoint() {
- return "https://foursquare.com/oauth2/access_token?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://foursquare.com/oauth2/access_token";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
index 26d003bdd..c94c143c8 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
@@ -1,13 +1,11 @@
package com.github.scribejava.apis;
import com.github.scribejava.apis.google.GoogleJsonTokenExtractor;
-import com.github.scribejava.apis.service.GoogleOAuthServiceImpl;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.OAuthConstants;
-import com.github.scribejava.core.oauth.OAuth20Service;
import com.github.scribejava.core.utils.OAuthEncoder;
public class GoogleApi20 extends DefaultApi20 {
@@ -47,9 +45,4 @@ public String getAuthorizationUrl(OAuthConfig config) {
public TokenExtractor getAccessTokenExtractor() {
return GoogleJsonTokenExtractor.instance();
}
-
- @Override
- public OAuth20Service createService(OAuthConfig config) {
- return new GoogleOAuthServiceImpl(this, config);
- }
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java
index 979a4b5a4..383f1d20f 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java
@@ -2,7 +2,6 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.utils.OAuthEncoder;
@@ -33,7 +32,7 @@ public Verb getAccessTokenVerb() {
@Override
public String getAccessTokenEndpoint() {
- return "https://api.kaixin001.com/oauth2/access_token?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://api.kaixin001.com/oauth2/access_token";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java
index 8d02a199c..96b742bc9 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java
@@ -2,7 +2,6 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.utils.OAuthEncoder;
import com.github.scribejava.core.utils.Preconditions;
@@ -31,7 +30,7 @@ public Verb getAccessTokenVerb() {
@Override
public String getAccessTokenEndpoint() {
- return "https://login.live.com/oauth20_token.srf?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://login.live.com/oauth20_token.srf";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java
index 0e3f96c4d..ad0151558 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java
@@ -2,7 +2,6 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.utils.OAuthEncoder;
import com.github.scribejava.core.utils.Preconditions;
@@ -25,7 +24,7 @@ public static PinterestApi instance() {
@Override
public String getAccessTokenEndpoint() {
- return "https://api.pinterest.com/v1/oauth/token?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://api.pinterest.com/v1/oauth/token";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java
index 726baffd4..25430ecd6 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java
@@ -2,7 +2,6 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.utils.OAuthEncoder;
@@ -33,7 +32,7 @@ public Verb getAccessTokenVerb() {
@Override
public String getAccessTokenEndpoint() {
- return "https://graph.renren.com/oauth/token?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://graph.renren.com/oauth/token";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java
index b0edb459d..42860e655 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java
@@ -2,7 +2,6 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.utils.OAuthEncoder;
/**
@@ -27,7 +26,7 @@ public static SinaWeiboApi20 instance() {
@Override
public String getAccessTokenEndpoint() {
- return "https://api.weibo.com/oauth2/access_token?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://api.weibo.com/oauth2/access_token";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java
index a84c15195..185d684af 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java
@@ -2,7 +2,6 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.utils.OAuthEncoder;
import com.github.scribejava.core.utils.Preconditions;
@@ -31,7 +30,7 @@ public Verb getAccessTokenVerb() {
@Override
public String getAccessTokenEndpoint() {
- return "https://secure.viadeo.com/oauth-provider/access_token2?grant_type=" + OAuthConstants.AUTHORIZATION_CODE;
+ return "https://secure.viadeo.com/oauth-provider/access_token2";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/service/GoogleOAuthServiceImpl.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/service/GoogleOAuthServiceImpl.java
deleted file mode 100644
index 015ce3677..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/service/GoogleOAuthServiceImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.github.scribejava.apis.service;
-
-import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.AbstractRequest;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
-import com.github.scribejava.core.oauth.OAuth20Service;
-
-public class GoogleOAuthServiceImpl extends OAuth20Service {
-
- public GoogleOAuthServiceImpl(DefaultApi20 api, OAuthConfig config) {
- super(api, config);
- }
-
- @Override
- protected T createAccessTokenRequest(String code, T request) {
- super.createAccessTokenRequest(code, request);
- if (!getConfig().hasGrantType()) {
- request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.AUTHORIZATION_CODE);
- }
- return request;
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/service/LinkedIn20ServiceImpl.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/service/LinkedIn20ServiceImpl.java
index 49bae5ecf..b0e6adf14 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/service/LinkedIn20ServiceImpl.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/service/LinkedIn20ServiceImpl.java
@@ -4,7 +4,6 @@
import com.github.scribejava.core.model.AbstractRequest;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.oauth.OAuth20Service;
public class LinkedIn20ServiceImpl extends OAuth20Service {
@@ -17,13 +16,4 @@ public LinkedIn20ServiceImpl(DefaultApi20 api, OAuthConfig config) {
public void signRequest(OAuth2AccessToken accessToken, AbstractRequest request) {
request.addQuerystringParameter("oauth2_access_token", accessToken.getAccessToken());
}
-
- @Override
- protected T createAccessTokenRequest(String code, T request) {
- super.createAccessTokenRequest(code, request);
- if (!getConfig().hasGrantType()) {
- request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.AUTHORIZATION_CODE);
- }
- return request;
- }
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/service/MailruOAuthServiceImpl.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/service/MailruOAuthServiceImpl.java
index a6d4f9b3a..d436d8244 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/service/MailruOAuthServiceImpl.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/service/MailruOAuthServiceImpl.java
@@ -10,7 +10,6 @@
import com.github.scribejava.core.model.AbstractRequest;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.oauth.OAuth20Service;
public class MailruOAuthServiceImpl extends OAuth20Service {
@@ -49,13 +48,4 @@ public void signRequest(OAuth2AccessToken accessToken, AbstractRequest request)
throw new IllegalStateException(e);
}
}
-
- @Override
- protected T createAccessTokenRequest(String code, T request) {
- super.createAccessTokenRequest(code, request);
- if (!getConfig().hasGrantType()) {
- request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.AUTHORIZATION_CODE);
- }
- return request;
- }
}
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
index ad9d687d1..0ca8052e0 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
@@ -24,7 +24,6 @@ public static void main(String... args) {
.apiKey(clientId)
.apiSecret(clientSecret)
.callback("http://your.site.com/callback")
- .grantType("authorization_code")
.build(HHApi.instance());
final Scanner in = new Scanner(System.in);
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
index 6cdc33e7c..1900e3f47 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
@@ -4,7 +4,6 @@
import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.apis.OdnoklassnikiApi;
import com.github.scribejava.core.model.OAuth2AccessToken;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
@@ -25,7 +24,6 @@ public static void main(String... args) {
final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
.apiSecret(secretKey)
- .grantType(OAuthConstants.AUTHORIZATION_CODE)
.callback("http://your.site.com/callback")
.build(OdnoklassnikiApi.instance());
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
index 4f201c85e..e8d82d98b 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
@@ -3,7 +3,6 @@
import java.util.Scanner;
import com.github.scribejava.core.builder.ServiceBuilder;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
@@ -24,7 +23,6 @@ public static void main(String... args) {
final OAuth20Service service = new ServiceBuilder()
.apiKey(clientId)
.apiSecret(clientSecret)
- .grantType(OAuthConstants.AUTHORIZATION_CODE)
.callback("http://www.example.com/oauth_callback/")
.build(TutByApi.instance());
final Scanner in = new Scanner(System.in, "UTF-8");
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
index 57bd54e96..de5f51f03 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
@@ -21,7 +21,6 @@ public class ServiceBuilder {
private String state;
private SignatureType signatureType;
private OutputStream debugStream;
- private String grantType;
private String responseType = "code";
private String userAgent;
@@ -116,12 +115,6 @@ public ServiceBuilder debugStream(OutputStream debugStream) {
return this;
}
- public ServiceBuilder grantType(String grantType) {
- Preconditions.checkEmptyString(grantType, "Invalid OAuth grantType");
- this.grantType = grantType;
- return this;
- }
-
public ServiceBuilder responseType(String responseType) {
Preconditions.checkEmptyString(responseType, "Invalid OAuth responseType");
this.responseType = responseType;
@@ -166,9 +159,8 @@ public void checkPreconditions() {
}
private OAuthConfig createConfig() {
checkPreconditions();
- return new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream, grantType, state,
- responseType, userAgent, connectTimeout, readTimeout, asyncHttpClientConfig,
- asyncHttpProviderClassName);
+ return new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream, state, responseType,
+ userAgent, connectTimeout, readTimeout, asyncHttpClientConfig, asyncHttpProviderClassName);
}
/**
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
index eba9ddeba..aab9ac513 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
@@ -14,7 +14,6 @@ public class OAuthConfig {
private final String callback;
private final SignatureType signatureType;
private final String scope;
- private final String grantType;
private final OutputStream debugStream;
private final String state;
private final String responseType;
@@ -29,20 +28,18 @@ public class OAuthConfig {
private final String asyncHttpProviderClassName;
public OAuthConfig(String key, String secret) {
- this(key, secret, null, null, null, null, null, null, null, null, null, null, null, null);
+ this(key, secret, null, null, null, null, null, null, null, null, null, null, null);
}
public OAuthConfig(String apiKey, String apiSecret, String callback, SignatureType signatureType, String scope,
- OutputStream debugStream, String grantType, String state, String responseType, String userAgent,
- Integer connectTimeout, Integer readTimeout, AsyncHttpClientConfig asyncHttpClientConfig,
- String asyncHttpProviderClassName) {
+ OutputStream debugStream, String state, String responseType, String userAgent, Integer connectTimeout,
+ Integer readTimeout, AsyncHttpClientConfig asyncHttpClientConfig, String asyncHttpProviderClassName) {
this.apiKey = apiKey;
this.apiSecret = apiSecret;
this.callback = callback;
this.signatureType = signatureType;
this.scope = scope;
this.debugStream = debugStream;
- this.grantType = grantType;
this.state = state;
this.responseType = responseType;
this.userAgent = userAgent;
@@ -76,14 +73,6 @@ public boolean hasScope() {
return scope != null;
}
- public String getGrantType() {
- return grantType;
- }
-
- public boolean hasGrantType() {
- return grantType != null;
- }
-
public String getState() {
return state;
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index 2c7f8306b..275a825b5 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -87,9 +87,7 @@ protected T createAccessTokenRequest(String code, T
if (config.hasScope()) {
request.addParameter(OAuthConstants.SCOPE, config.getScope());
}
- if (config.hasGrantType()) {
- request.addParameter(OAuthConstants.GRANT_TYPE, config.getGrantType());
- }
+ request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.AUTHORIZATION_CODE);
return request;
}
From 338406dc2c716e15f96aae43614628f8b285502f Mon Sep 17 00:00:00 2001
From: Tomasz Szymaniec
Date: Sat, 9 Apr 2016 22:30:01 +0100
Subject: [PATCH 054/250] add Genius.com API authentication (OAuth2)
---
changelog | 1 +
.../com/github/scribejava/apis/GeniusApi.java | 52 ++++++++++++
.../apis/service/GeniusOAuthServiceImpl.java | 19 +++++
.../apis/examples/GeniusExample.java | 85 +++++++++++++++++++
4 files changed, 157 insertions(+)
create mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java
create mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/service/GeniusOAuthServiceImpl.java
create mode 100644 scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java
diff --git a/changelog b/changelog
index 61683c6d3..226303c8e 100644
--- a/changelog
+++ b/changelog
@@ -2,6 +2,7 @@
* simplify async/sync usages
* add optional "User-Agent" config option to use while making http calls
* refactor usage of grant_type [authorization_code|refresh_token|password|etc]
+ * add Genius.com API authentication (OAuth2)
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java
new file mode 100644
index 000000000..172138cb1
--- /dev/null
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java
@@ -0,0 +1,52 @@
+package com.github.scribejava.apis;
+
+import com.github.scribejava.apis.service.GeniusOAuthServiceImpl;
+import com.github.scribejava.core.builder.api.DefaultApi20;
+import com.github.scribejava.core.model.OAuthConfig;
+import com.github.scribejava.core.oauth.OAuth20Service;
+import com.github.scribejava.core.utils.OAuthEncoder;
+
+public class GeniusApi extends DefaultApi20 {
+
+ private static final String AUTHORIZE_URL = "https://api.genius.com/oauth/authorize"
+ + "?client_id=%s"
+ + "&redirect_uri=%s"
+ + "&scope=%s"
+ + "&state=%s"
+ + "&response_type=code";
+
+ private static final String TOKEN_ENDPOINT_URL = "https://api.genius.com/oauth/token";
+
+ protected GeniusApi() {
+ }
+
+ private static class InstanceHolder {
+
+ private static final GeniusApi INSTANCE = new GeniusApi();
+ }
+
+ public static GeniusApi instance() {
+ return InstanceHolder.INSTANCE;
+ }
+
+ @Override
+ public String getAccessTokenEndpoint() {
+ return TOKEN_ENDPOINT_URL;
+ }
+
+ @Override
+ public String getAuthorizationUrl(OAuthConfig config) {
+
+ // User must provide these 4 elements to the service builder
+ return String.format(AUTHORIZE_URL,
+ OAuthEncoder.encode(config.getApiKey()),
+ OAuthEncoder.encode(config.getCallback()),
+ OAuthEncoder.encode(config.getScope()),
+ OAuthEncoder.encode(config.getState()));
+ }
+
+ @Override
+ public OAuth20Service createService(OAuthConfig config) {
+ return new GeniusOAuthServiceImpl(this, config);
+ }
+}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/service/GeniusOAuthServiceImpl.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/service/GeniusOAuthServiceImpl.java
new file mode 100644
index 000000000..4c2aa992c
--- /dev/null
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/service/GeniusOAuthServiceImpl.java
@@ -0,0 +1,19 @@
+package com.github.scribejava.apis.service;
+
+import com.github.scribejava.core.builder.api.DefaultApi20;
+import com.github.scribejava.core.model.AbstractRequest;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuthConfig;
+import com.github.scribejava.core.oauth.OAuth20Service;
+
+public class GeniusOAuthServiceImpl extends OAuth20Service {
+
+ public GeniusOAuthServiceImpl(DefaultApi20 api, OAuthConfig config) {
+ super(api, config);
+ }
+
+ @Override
+ public void signRequest(OAuth2AccessToken accessToken, AbstractRequest request) {
+ request.addHeader("Authorization", "Bearer " + accessToken.getAccessToken());
+ }
+}
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java
new file mode 100644
index 000000000..141cc7ebf
--- /dev/null
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java
@@ -0,0 +1,85 @@
+package com.github.scribejava.apis.examples;
+
+import java.util.Scanner;
+
+import com.github.scribejava.apis.GeniusApi;
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuthRequest;
+import com.github.scribejava.core.model.Response;
+import com.github.scribejava.core.model.Verb;
+import com.github.scribejava.core.oauth.OAuth20Service;
+
+public abstract class GeniusExample {
+
+ private static final String NETWORK_NAME = "Genius";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.genius.com/songs/378195";
+
+ public static void main(String... args) {
+ // Replace these with your client id and secret
+ final String clientId = "your client id";
+ final String clientSecret = "your client secret";
+ final String secretState = "100";
+ final OAuth20Service service = new ServiceBuilder()
+ .apiKey(clientId)
+ .apiSecret(clientSecret)
+ .scope("me")
+ .state(secretState)
+ .callback("com.scribejavatest://callback")
+ .userAgent("ScribeJava")
+ .build(GeniusApi.instance());
+
+ 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();
+ System.out.println("Got the Authorization URL!");
+ System.out.println("Now go and authorize ScribeJava here:");
+ System.out.println(authorizationUrl);
+ System.out.println("And paste the authorization code here");
+ System.out.print(">>");
+ final String code;
+ final String value;
+ try (Scanner in = new Scanner(System.in, "UTF-8")) {
+ code = in.nextLine();
+ System.out.println();
+
+ System.out.println("And paste the state from server here. We have set 'secretState'='" + secretState
+ + "'.");
+ System.out.print(">>");
+ value = in.nextLine();
+ }
+
+ if (secretState.equals(value)) {
+ System.out.println("State value does match!");
+ } else {
+ System.out.println("Ooops, state value does not match!");
+ System.out.println("Expected = " + secretState);
+ System.out.println("Got = " + value);
+ 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 OAuth2AccessToken accessToken = service.getAccessToken(code);
+ System.out.println("Got the Access Token!");
+ System.out.println("(View Access Token contents: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
+ System.out.println();
+
+ // Now let's go and ask for a protected resource!
+ System.out.println("Accessing a protected resource...");
+ final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL, service);
+ service.signRequest(accessToken, request);
+ final Response response = request.send();
+ System.out.println("Got it! Viewing contents...");
+ 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 ScribeJava! :)");
+ }
+}
From ca335ad2c9b836c7d2ef9933e8bedb4d4bab3578 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 14:05:40 +0300
Subject: [PATCH 055/250] update maven dependencies
---
pom.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index a87a5c4bf..83388dab5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,7 +120,7 @@
org.apache.maven.plugins
maven-jar-plugin
- 2.6
+ 3.0.0
${project.build.outputDirectory}/META-INF/MANIFEST.MF
@@ -163,7 +163,7 @@
org.apache.maven.plugins
maven-resources-plugin
- 2.7
+ 3.0.0
UTF-8
@@ -205,7 +205,7 @@
com.puppycrawl.tools
checkstyle
- 6.17
+ 6.18
From 8af489aff6504e24b05abe7cc329a2af9d03dcf6 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 17:39:23 +0300
Subject: [PATCH 056/250] fix GitHubAPI
---
changelog | 1 +
.../src/main/java/com/github/scribejava/apis/GitHubApi.java | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/changelog b/changelog
index 226303c8e..714a3024e 100644
--- a/changelog
+++ b/changelog
@@ -3,6 +3,7 @@
* add optional "User-Agent" config option to use while making http calls
* refactor usage of grant_type [authorization_code|refresh_token|password|etc]
* add Genius.com API authentication (OAuth2)
+ * fix GitHub API
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java
index 12ed978dd..ebacda46f 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java
@@ -27,7 +27,7 @@ public static GitHubApi instance() {
@Override
public Verb getAccessTokenVerb() {
- return Verb.GET;
+ return Verb.POST;
}
@Override
From 4e2a9a13b4fb601cbc2c99a9703f6147dd6a2529 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 17:26:40 +0300
Subject: [PATCH 057/250] standardize authorization url generation for OAuth2
---
changelog | 1 +
.../scribejava/apis/ConstantContactApi2.java | 10 +----
.../scribejava/apis/DoktornaraboteApi.java | 29 ++------------
.../github/scribejava/apis/FacebookApi.java | 23 +----------
.../scribejava/apis/Foursquare2Api.java | 12 +-----
.../com/github/scribejava/apis/GeniusApi.java | 22 ++---------
.../com/github/scribejava/apis/GitHubApi.java | 21 +---------
.../github/scribejava/apis/GoogleApi20.java | 17 +--------
.../com/github/scribejava/apis/HHApi.java | 12 ++----
.../com/github/scribejava/apis/ImgurApi.java | 34 ++++++++++++++---
.../github/scribejava/apis/KaixinApi20.java | 16 +-------
.../github/scribejava/apis/LinkedInApi20.java | 22 +----------
.../com/github/scribejava/apis/LiveApi.java | 20 +---------
.../com/github/scribejava/apis/MailruApi.java | 17 +--------
.../scribejava/apis/OdnoklassnikiApi.java | 23 +----------
.../github/scribejava/apis/PinterestApi.java | 20 +---------
.../com/github/scribejava/apis/RenrenApi.java | 16 +-------
.../scribejava/apis/SinaWeiboApi20.java | 16 +-------
.../scribejava/apis/StackExchangeApi.java | 22 +----------
.../com/github/scribejava/apis/TutByApi.java | 11 +-----
.../com/github/scribejava/apis/ViadeoApi.java | 20 +---------
.../github/scribejava/apis/VkontakteApi.java | 18 +--------
.../core/builder/ServiceBuilder.java | 1 +
.../core/builder/api/DefaultApi20.java | 38 +++++++++----------
.../scribejava/core/model/OAuthConfig.java | 4 --
.../scribejava/core/model/OAuthConstants.java | 2 +
.../scribejava/core/model/ParameterList.java | 18 +++++----
.../core/oauth/OAuth10aService.java | 5 ++-
.../scribejava/core/oauth/OAuth20Service.java | 22 +++++------
.../core/builder/ServiceBuilderTest.java | 2 +-
.../scribejava/core/oauth/OAuth20ApiUnit.java | 2 +-
31 files changed, 120 insertions(+), 376 deletions(-)
diff --git a/changelog b/changelog
index 714a3024e..117278137 100644
--- a/changelog
+++ b/changelog
@@ -4,6 +4,7 @@
* refactor usage of grant_type [authorization_code|refresh_token|password|etc]
* add Genius.com API authentication (OAuth2)
* fix GitHub API
+ * standardize authorization url generation for OAuth2
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
index b0bbb59eb..94cbde0c8 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
@@ -5,15 +5,9 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.utils.OAuthEncoder;
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";
-
protected ConstantContactApi2() {
}
@@ -31,8 +25,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
+ protected String getAuthorizationBaseUrl() {
+ return "https://oauth2.constantcontact.com/oauth2/oauth/siteowner/authorize";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/DoktornaraboteApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/DoktornaraboteApi.java
index 6332aa198..8965ea07f 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/DoktornaraboteApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/DoktornaraboteApi.java
@@ -3,17 +3,10 @@
import com.github.scribejava.apis.service.DoktornaraboteOAuthServiceImpl;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.oauth.OAuth20Service;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
public class DoktornaraboteApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "http://auth.doktornarabote.ru/OAuth/Authorize?response_type=code&client_id=%s&redirect_uri=%s&scope=%s";
- private static final String TOKEN_URL = "http://auth.doktornarabote.ru/OAuth/Token";
-
protected DoktornaraboteApi() {
}
@@ -27,28 +20,12 @@ public static DoktornaraboteApi instance() {
@Override
public String getAccessTokenEndpoint() {
- return TOKEN_URL;
+ return "http://auth.doktornarabote.ru/OAuth/Token";
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(
- config.getCallback(),
- "Must provide a valid url as callback. Doktornarabote does not support OOB");
- final StringBuilder sb = new StringBuilder(
- String.format(
- AUTHORIZE_URL,
- config.getApiKey(),
- OAuthEncoder.encode(config.getCallback()),
- OAuthEncoder.encode(config.getScope())
- )
- );
-
- final String state = config.getState();
- if (state != null) {
- sb.append('&').append(OAuthConstants.STATE).append('=').append(OAuthEncoder.encode(state));
- }
- return sb.toString();
+ protected String getAuthorizationBaseUrl() {
+ return "http://auth.doktornarabote.ru/OAuth/Authorize";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
index a2c18b2d6..ffccdd73d 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
@@ -1,20 +1,13 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
/**
* Facebook v2.5 API
*/
public class FacebookApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "https://www.facebook.com/v2.5/dialog/oauth?client_id=%s&redirect_uri=%s";
-
protected FacebookApi() {
}
@@ -43,19 +36,7 @@ public String getRefreshTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Must provide a valid url as callback. Facebook does not support OOB");
- final StringBuilder sb = new StringBuilder(String.format(AUTHORIZE_URL, config.getApiKey(),
- OAuthEncoder.encode(config.getCallback())));
- if (config.hasScope()) {
- sb.append('&').append(OAuthConstants.SCOPE).append('=').append(OAuthEncoder.encode(config.getScope()));
- }
-
- final String state = config.getState();
- if (state != null) {
- sb.append('&').append(OAuthConstants.STATE).append('=').append(OAuthEncoder.encode(state));
- }
- return sb.toString();
+ protected String getAuthorizationBaseUrl() {
+ return "https://www.facebook.com/v2.5/dialog/oauth";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java
index 0fc29de2b..cb574618d 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/Foursquare2Api.java
@@ -1,16 +1,10 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
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";
-
protected Foursquare2Api() {
}
@@ -33,9 +27,7 @@ public String getAccessTokenEndpoint() {
}
@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()));
+ protected String getAuthorizationBaseUrl() {
+ return "https://foursquare.com/oauth2/authenticate";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java
index 172138cb1..14570697c 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/GeniusApi.java
@@ -4,19 +4,9 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.oauth.OAuth20Service;
-import com.github.scribejava.core.utils.OAuthEncoder;
public class GeniusApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL = "https://api.genius.com/oauth/authorize"
- + "?client_id=%s"
- + "&redirect_uri=%s"
- + "&scope=%s"
- + "&state=%s"
- + "&response_type=code";
-
- private static final String TOKEN_ENDPOINT_URL = "https://api.genius.com/oauth/token";
-
protected GeniusApi() {
}
@@ -31,18 +21,12 @@ public static GeniusApi instance() {
@Override
public String getAccessTokenEndpoint() {
- return TOKEN_ENDPOINT_URL;
+ return "https://api.genius.com/oauth/token";
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
-
- // User must provide these 4 elements to the service builder
- return String.format(AUTHORIZE_URL,
- OAuthEncoder.encode(config.getApiKey()),
- OAuthEncoder.encode(config.getCallback()),
- OAuthEncoder.encode(config.getScope()),
- OAuthEncoder.encode(config.getState()));
+ protected String getAuthorizationBaseUrl() {
+ return "https://api.genius.com/oauth/authorize";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java
index ebacda46f..ada35c1b3 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/GitHubApi.java
@@ -4,16 +4,10 @@
import com.github.scribejava.core.extractors.OAuth2AccessTokenExtractor;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
public class GitHubApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL = "https://github.com/login/oauth/authorize?client_id=%s&redirect_uri=%s";
-
protected GitHubApi() {
}
@@ -36,19 +30,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Must provide a valid url as callback. GitHub does not support OOB");
- final StringBuilder sb = new StringBuilder(String.format(AUTHORIZE_URL, config.getApiKey(),
- OAuthEncoder.encode(config.getCallback())));
- if (config.hasScope()) {
- sb.append('&').append(OAuthConstants.SCOPE).append('=').append(OAuthEncoder.encode(config.getScope()));
- }
- final String state = config.getState();
- if (state != null) {
- sb.append('&').append(OAuthConstants.STATE).append('=').append(OAuthEncoder.encode(state));
- }
- return sb.toString();
+ protected String getAuthorizationBaseUrl() {
+ return "https://github.com/login/oauth/authorize";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
index c94c143c8..157753f6d 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/GoogleApi20.java
@@ -4,15 +4,9 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
-import com.github.scribejava.core.utils.OAuthEncoder;
public class GoogleApi20 extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "https://accounts.google.com/o/oauth2/auth?response_type=%s&client_id=%s&redirect_uri=%s&scope=%s";
-
protected GoogleApi20() {
}
@@ -30,15 +24,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- final StringBuilder sb = new StringBuilder(String.format(AUTHORIZE_URL, config.getResponseType(),
- config.getApiKey(), OAuthEncoder.encode(config.getCallback()), OAuthEncoder.encode(config.getScope())));
-
- final String state = config.getState();
- if (state != null) {
- sb.append('&').append(OAuthConstants.STATE).append('=').append(OAuthEncoder.encode(state));
- }
- return sb.toString();
+ protected String getAuthorizationBaseUrl() {
+ return "https://accounts.google.com/o/oauth2/auth";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/HHApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/HHApi.java
index ca67c8fca..acb239fa5 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/HHApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/HHApi.java
@@ -5,15 +5,9 @@
import com.github.scribejava.apis.service.HHOAuthServiceImpl;
import com.github.scribejava.core.oauth.OAuth20Service;
-import com.github.scribejava.core.utils.OAuthEncoder;
public class HHApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL = "https://hh.ru/oauth/authorize?response_type=code&" +
- "client_id=%s&redirect_uri=%s";
-
- private static final String TOKEN_URL = "https://hh.ru/oauth/token";
-
protected HHApi() {
}
@@ -27,12 +21,12 @@ public static HHApi instance() {
@Override
public String getAccessTokenEndpoint() {
- return TOKEN_URL;
+ return "https://hh.ru/oauth/token";
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
+ protected String getAuthorizationBaseUrl() {
+ return "https://hh.ru/oauth/authorize";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/ImgurApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/ImgurApi.java
index d55ad2d99..3b14473d1 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/ImgurApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/ImgurApi.java
@@ -3,13 +3,13 @@
import com.github.scribejava.apis.service.ImgurOAuthServiceImpl;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
+import com.github.scribejava.core.model.OAuthConstants;
+import com.github.scribejava.core.model.ParameterList;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.util.Map;
public class ImgurApi extends DefaultApi20 {
- private static final String AUTHORIZATION_URL =
- "https://api.imgur.com/oauth2/authorize?client_id=%s&response_type=%s";
-
protected ImgurApi() {
}
@@ -27,8 +27,32 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- return String.format(AUTHORIZATION_URL, config.getApiKey(), isOob(config) ? "pin" : "code");
+ public String getAuthorizationUrl(OAuthConfig config, Map additionalParams) {
+ final ParameterList parameters = new ParameterList(additionalParams);
+ parameters.add(OAuthConstants.RESPONSE_TYPE, isOob(config) ? "pin" : "code");
+ parameters.add(OAuthConstants.CLIENT_ID, config.getApiKey());
+
+ final String callback = config.getCallback();
+ if (callback != null) {
+ parameters.add(OAuthConstants.REDIRECT_URI, callback);
+ }
+
+ final String scope = config.getScope();
+ if (scope != null) {
+ parameters.add(OAuthConstants.SCOPE, scope);
+ }
+
+ final String state = config.getState();
+ if (state != null) {
+ parameters.add(OAuthConstants.STATE, state);
+ }
+
+ return parameters.appendTo("https://api.imgur.com/oauth2/authorize");
+ }
+
+ @Override
+ protected String getAuthorizationBaseUrl() {
+ throw new UnsupportedOperationException("use getAuthorizationUrl instead");
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java
index 383f1d20f..cd8917fd5 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi20.java
@@ -1,19 +1,13 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.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=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
protected KaixinApi20() {
}
@@ -36,13 +30,7 @@ public String getAccessTokenEndpoint() {
}
@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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "http://api.kaixin001.com/oauth2/authorize";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/LinkedInApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/LinkedInApi20.java
index 3043f2737..b39f4a33b 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/LinkedInApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/LinkedInApi20.java
@@ -3,20 +3,11 @@
import com.github.scribejava.apis.service.LinkedIn20ServiceImpl;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
public class LinkedInApi20 extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=%s&redirect_uri=%s&"
- + OAuthConstants.STATE + "=%s";
-
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
protected LinkedInApi20() {
}
@@ -39,17 +30,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Must provide a valid url as callback. LinkedIn does not support OOB");
-
- if (config.hasScope()) {
- return String.format(SCOPED_AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()),
- config.getState(), OAuthEncoder.encode(config.getScope()));
- } else {
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()),
- config.getState());
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://www.linkedin.com/uas/oauth2/authorization";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java
index 96b742bc9..ee6c6ba12 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/LiveApi.java
@@ -1,17 +1,10 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
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";
-
protected LiveApi() {
}
@@ -34,16 +27,7 @@ public String getAccessTokenEndpoint() {
}
@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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://oauth.live.com/authorize";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/MailruApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/MailruApi.java
index a15b45634..a67e434c5 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/MailruApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/MailruApi.java
@@ -2,17 +2,11 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
import com.github.scribejava.apis.service.MailruOAuthServiceImpl;
import com.github.scribejava.core.oauth.OAuth20Service;
public class MailruApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "https://connect.mail.ru/oauth/authorize?client_id=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
protected MailruApi() {
}
@@ -30,15 +24,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Valid url is required for a callback. Mail.ru 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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://connect.mail.ru/oauth/authorize";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java
index 0651fe108..3144a77e0 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/OdnoklassnikiApi.java
@@ -4,14 +4,9 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.oauth.OAuth20Service;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
public class OdnoklassnikiApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "https://connect.ok.ru/oauth/authorize?client_id=%s&response_type=code&redirect_uri=%s";
-
protected OdnoklassnikiApi() {
}
@@ -29,22 +24,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Valid url is required for a callback. Odnoklassniki does not support OOB");
-
- final StringBuilder urlBuilder = new StringBuilder(String.format(AUTHORIZE_URL,
- config.getApiKey(), OAuthEncoder.encode(config.getCallback())));
-
- if (config.hasScope()) {
- urlBuilder.append("&scope=").append(OAuthEncoder.encode(config.getScope()));
- }
-
- final String state = config.getState();
- if (state != null) {
- urlBuilder.append("&state=").append(OAuthEncoder.encode(config.getState()));
- }
- return urlBuilder.toString();
+ protected String getAuthorizationBaseUrl() {
+ return "https://connect.ok.ru/oauth/authorize";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java
index ad0151558..0f44d7b12 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/PinterestApi.java
@@ -1,16 +1,9 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
public class PinterestApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "https://api.pinterest.com/oauth?response_type=code&client_id=%s&redirect_uri=%s";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
protected PinterestApi() {
}
@@ -28,16 +21,7 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Must provide a valid url as callback. Pinterest 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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://api.pinterest.com/oauth";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java
index 25430ecd6..da10760c3 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/RenrenApi.java
@@ -1,19 +1,13 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.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=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
protected RenrenApi() {
}
@@ -36,13 +30,7 @@ public String getAccessTokenEndpoint() {
}
@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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://graph.renren.com/oauth/authorize";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java
index 42860e655..1799806f1 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/SinaWeiboApi20.java
@@ -1,18 +1,12 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.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=%s&redirect_uri=%s&response_type=code";
- private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s";
-
protected SinaWeiboApi20() {
}
@@ -30,13 +24,7 @@ public String getAccessTokenEndpoint() {
}
@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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://api.weibo.com/oauth2/authorize";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/StackExchangeApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/StackExchangeApi.java
index e2e8c5b25..c6dfcb101 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/StackExchangeApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/StackExchangeApi.java
@@ -4,10 +4,6 @@
import com.github.scribejava.core.extractors.OAuth2AccessTokenExtractor;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
/**
* Stack Exchange authentication via OAuth 2.0 (stackoverflow.com,
@@ -15,8 +11,6 @@
*/
public class StackExchangeApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL = "https://stackexchange.com/oauth?client_id=%s&redirect_uri=%s";
-
protected StackExchangeApi() {
}
@@ -34,20 +28,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Must provide a valid url as callback. StackExchange does not support OOB");
- final StringBuilder sb = new StringBuilder(String.format(AUTHORIZE_URL, config.getApiKey(),
- OAuthEncoder.encode(config.getCallback())));
- if (config.hasScope()) {
- sb.append('&').append(OAuthConstants.SCOPE).append('=').append(OAuthEncoder.encode(config.getScope()));
- }
-
- final String state = config.getState();
- if (state != null) {
- sb.append('&').append(OAuthConstants.STATE).append('=').append(OAuthEncoder.encode(state));
- }
- return sb.toString();
+ protected String getAuthorizationBaseUrl() {
+ return "https://stackexchange.com/oauth";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/TutByApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/TutByApi.java
index 72d3e13fd..6928ba70a 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/TutByApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/TutByApi.java
@@ -2,16 +2,11 @@
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
import com.github.scribejava.apis.service.TutByOAuthServiceImpl;
import com.github.scribejava.core.oauth.OAuth20Service;
public class TutByApi extends DefaultApi20 {
- private static final String AUTHORIZE_URL
- = "http://profile.tut.by/auth?client_id=%s&response_type=code&redirect_uri=%s";
-
protected TutByApi() {
}
@@ -29,10 +24,8 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
- Preconditions.checkValidUrl(config.getCallback(),
- "Valid url is required for a callback. Tut.by does not support OOB");
- return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
+ protected String getAuthorizationBaseUrl() {
+ return "http://profile.tut.by/auth";
}
@Override
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java
index 185d684af..e3143b5b4 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/ViadeoApi.java
@@ -1,17 +1,10 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
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";
-
protected ViadeoApi() {
}
@@ -34,16 +27,7 @@ public String getAccessTokenEndpoint() {
}
@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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://secure.viadeo.com/oauth-provider/authorize2";
}
}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/VkontakteApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/VkontakteApi.java
index 5ee9a88fe..7d440d275 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/VkontakteApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/VkontakteApi.java
@@ -1,17 +1,10 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
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);
-
protected VkontakteApi() {
}
@@ -34,14 +27,7 @@ public String getAccessTokenEndpoint() {
}
@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()));
- }
+ protected String getAuthorizationBaseUrl() {
+ return "https://oauth.vk.com/authorize";
}
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
index de5f51f03..a6404043f 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
@@ -157,6 +157,7 @@ public ServiceBuilder debug() {
public void checkPreconditions() {
Preconditions.checkEmptyString(apiKey, "You must provide an api key");
}
+
private OAuthConfig createConfig() {
checkPreconditions();
return new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream, state, responseType,
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java
index 30095f134..480a7a34d 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/api/DefaultApi20.java
@@ -4,9 +4,10 @@
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthConfig;
+import com.github.scribejava.core.model.OAuthConstants;
+import com.github.scribejava.core.model.ParameterList;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
-import com.github.scribejava.core.utils.OAuthEncoder;
import java.util.Map;
/**
@@ -53,13 +54,7 @@ public String getRefreshTokenEndpoint() {
return getAccessTokenEndpoint();
}
- /**
- * Returns the URL where you should redirect your users to authenticate your application.
- *
- * @param config OAuth 2.0 configuration param object
- * @return the URL where you should redirect your users
- */
- public abstract String getAuthorizationUrl(OAuthConfig config);
+ protected abstract String getAuthorizationBaseUrl();
/**
* Returns the URL where you should redirect your users to authenticate your application.
@@ -69,23 +64,26 @@ public String getRefreshTokenEndpoint() {
* @return the URL where you should redirect your users
*/
public String getAuthorizationUrl(OAuthConfig config, Map additionalParams) {
- String authUrl = getAuthorizationUrl(config);
+ final ParameterList parameters = new ParameterList(additionalParams);
+ parameters.add(OAuthConstants.RESPONSE_TYPE, config.getResponseType());
+ parameters.add(OAuthConstants.CLIENT_ID, config.getApiKey());
- if (additionalParams != null && !additionalParams.isEmpty()) {
- final StringBuilder authUrlWithParams = new StringBuilder(authUrl)
- .append(authUrl.indexOf('?') == -1 ? '?' : '&');
+ final String callback = config.getCallback();
+ if (callback != null) {
+ parameters.add(OAuthConstants.REDIRECT_URI, callback);
+ }
- for (Map.Entry param : additionalParams.entrySet()) {
- authUrlWithParams.append(OAuthEncoder.encode(param.getKey()))
- .append('=')
- .append(OAuthEncoder.encode(param.getValue()))
- .append('&');
- }
+ final String scope = config.getScope();
+ if (scope != null) {
+ parameters.add(OAuthConstants.SCOPE, scope);
+ }
- authUrl = authUrlWithParams.substring(0, authUrlWithParams.length() - 1);
+ final String state = config.getState();
+ if (state != null) {
+ parameters.add(OAuthConstants.STATE, state);
}
- return authUrl;
+ return parameters.appendTo(getAuthorizationBaseUrl());
}
@Override
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
index aab9ac513..78358d2e3 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
@@ -69,10 +69,6 @@ public String getScope() {
return scope;
}
- public boolean hasScope() {
- return scope != null;
- }
-
public String getState() {
return state;
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
index d328e2242..2cf8d236a 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConstants.java
@@ -35,6 +35,8 @@ public interface OAuthConstants {
String STATE = "state";
String USERNAME = "username";
String PASSWORD = "password";
+ String RESPONSE_TYPE = "response_type";
+ String RESPONSE_TYPE_CODE = "code";
//not OAuth specific
String USER_AGENT_HEADER_NAME = "User-Agent";
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/ParameterList.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/ParameterList.java
index c04bca9cd..39d806652 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/ParameterList.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/ParameterList.java
@@ -26,8 +26,10 @@ public ParameterList() {
public ParameterList(Map map) {
this();
- for (Map.Entry entry : map.entrySet()) {
- params.add(new Parameter(entry.getKey(), entry.getValue()));
+ if (map != null && !map.isEmpty()) {
+ for (Map.Entry entry : map.entrySet()) {
+ params.add(new Parameter(entry.getKey(), entry.getValue()));
+ }
}
}
@@ -41,9 +43,9 @@ public String appendTo(String url) {
if (queryString.equals(EMPTY_STRING)) {
return url;
} else {
- url += url.indexOf(QUERY_STRING_SEPARATOR) == -1 ? QUERY_STRING_SEPARATOR : PARAM_SEPARATOR;
- url += queryString;
- return url;
+ return url
+ + (url.indexOf(QUERY_STRING_SEPARATOR) == -1 ? QUERY_STRING_SEPARATOR : PARAM_SEPARATOR)
+ + queryString;
}
}
@@ -58,9 +60,9 @@ public String asFormUrlEncodedString() {
final StringBuilder builder = new StringBuilder();
for (Parameter p : params) {
- builder.append('&').append(p.asUrlEncodedPair());
+ builder.append(PARAM_SEPARATOR).append(p.asUrlEncodedPair());
}
- return builder.toString().substring(1);
+ return builder.substring(1);
}
public void addAll(ParameterList other) {
@@ -68,7 +70,7 @@ public void addAll(ParameterList other) {
}
public void addQuerystring(String queryString) {
- if (queryString != null && queryString.length() > 0) {
+ if (queryString != null && !queryString.isEmpty()) {
for (String param : queryString.split(PARAM_SEPARATOR)) {
final String[] pair = param.split(PAIR_SEPARATOR);
final String key = OAuthEncoder.decode(pair[0]);
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
index c9c99a03f..f2516d8c2 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
@@ -67,8 +67,9 @@ private void addOAuthParams(AbstractRequest request, String tokenSecret) {
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());
+ final String scope = config.getScope();
+ if (scope != null) {
+ request.addOAuthParameter(OAuthConstants.SCOPE, scope);
}
request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, tokenSecret));
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index 275a825b5..ef5494eac 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -84,8 +84,9 @@ protected T createAccessTokenRequest(String code, T
request.addParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret());
request.addParameter(OAuthConstants.CODE, code);
request.addParameter(OAuthConstants.REDIRECT_URI, config.getCallback());
- if (config.hasScope()) {
- request.addParameter(OAuthConstants.SCOPE, config.getScope());
+ final String scope = config.getScope();
+ if (scope != null) {
+ request.addParameter(OAuthConstants.SCOPE, scope);
}
request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.AUTHORIZATION_CODE);
return request;
@@ -164,19 +165,18 @@ protected T createAccessTokenPasswordGrantRequest(St
request.addParameter(OAuthConstants.USERNAME, username);
request.addParameter(OAuthConstants.PASSWORD, password);
- if (config.hasScope()) {
- request.addParameter(OAuthConstants.SCOPE, config.getScope());
+ final String scope = config.getScope();
+ if (scope != null) {
+ request.addParameter(OAuthConstants.SCOPE, scope);
}
request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.PASSWORD);
- request.addHeader(OAuthConstants.HEADER, OAuthConstants.BASIC + " "
- + Base64Encoder.getInstance().encode(
- String.format("%s:%s", config.getApiKey(), config.getApiSecret()).getBytes(
- Charset.forName("UTF-8")
- )
- )
- );
+ request.addHeader(OAuthConstants.HEADER,
+ OAuthConstants.BASIC + ' '
+ + Base64Encoder.getInstance()
+ .encode(String.format("%s:%s", config.getApiKey(), config.getApiSecret())
+ .getBytes(Charset.forName("UTF-8"))));
return request;
}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/builder/ServiceBuilderTest.java b/scribejava-core/src/test/java/com/github/scribejava/core/builder/ServiceBuilderTest.java
index 9bf8f386f..57f7d62e2 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/builder/ServiceBuilderTest.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/builder/ServiceBuilderTest.java
@@ -90,7 +90,7 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
+ protected String getAuthorizationBaseUrl() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java
index 5d7391fb3..7b23203ac 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ApiUnit.java
@@ -11,7 +11,7 @@ public String getAccessTokenEndpoint() {
}
@Override
- public String getAuthorizationUrl(OAuthConfig config) {
+ protected String getAuthorizationBaseUrl() {
return "http://localhost:8080/authorize";
}
From a6e1cb9d3dd5c63a71e61a6e16bfad865a3172f3 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 17:58:25 +0300
Subject: [PATCH 058/250] update Facebook to v2.6
---
changelog | 1 +
.../main/java/com/github/scribejava/apis/FacebookApi.java | 6 +++---
.../scribejava/apis/examples/FacebookAsyncExample.java | 2 +-
.../github/scribejava/apis/examples/FacebookExample.java | 2 +-
4 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/changelog b/changelog
index 117278137..39853250c 100644
--- a/changelog
+++ b/changelog
@@ -5,6 +5,7 @@
* add Genius.com API authentication (OAuth2)
* fix GitHub API
* standardize authorization url generation for OAuth2
+ * update Facebook to v2.6
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
index ffccdd73d..9bf5abfc0 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/FacebookApi.java
@@ -4,7 +4,7 @@
import com.github.scribejava.core.model.Verb;
/**
- * Facebook v2.5 API
+ * Facebook v2.6 API
*/
public class FacebookApi extends DefaultApi20 {
@@ -27,7 +27,7 @@ public Verb getAccessTokenVerb() {
@Override
public String getAccessTokenEndpoint() {
- return "https://graph.facebook.com/v2.5/oauth/access_token";
+ return "https://graph.facebook.com/v2.6/oauth/access_token";
}
@Override
@@ -37,6 +37,6 @@ public String getRefreshTokenEndpoint() {
@Override
protected String getAuthorizationBaseUrl() {
- return "https://www.facebook.com/v2.5/dialog/oauth";
+ return "https://www.facebook.com/v2.6/dialog/oauth";
}
}
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
index 3768394a7..65bee0cf9 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
@@ -17,7 +17,7 @@
public abstract class FacebookAsyncExample {
private static final String NETWORK_NAME = "Facebook";
- private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/v2.5/me";
+ private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/v2.6/me";
public static void main(String... args) throws InterruptedException, ExecutionException {
// Replace these with your client id and secret
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
index 28740b43a..463729c17 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
@@ -13,7 +13,7 @@
public abstract class FacebookExample {
private static final String NETWORK_NAME = "Facebook";
- private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/v2.5/me";
+ private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/v2.6/me";
public static void main(String... args) {
// Replace these with your client id and secret
From b7001c219a75da37efc422d6909ca1707d945366 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 18:32:34 +0300
Subject: [PATCH 059/250] cleanup: drop old APIs without exmaples
---
changelog | 1 +
.../scribejava/apis/ConstantContactApi.java | 36 ---------
.../scribejava/apis/ConstantContactApi2.java | 36 ---------
.../github/scribejava/apis/DropBoxApi.java | 34 --------
.../github/scribejava/apis/EvernoteApi.java | 81 -------------------
.../github/scribejava/apis/GetGlueApi.java | 38 ---------
.../com/github/scribejava/apis/KaixinApi.java | 48 -----------
.../github/scribejava/apis/MendeleyApi.java | 49 -----------
.../com/github/scribejava/apis/MisoApi.java | 38 ---------
.../github/scribejava/apis/NetProspexApi.java | 37 ---------
.../com/github/scribejava/apis/PlurkApi.java | 58 -------------
.../com/github/scribejava/apis/QWeiboApi.java | 37 ---------
.../com/github/scribejava/apis/SapoApi.java | 48 -----------
.../github/scribejava/apis/SimpleGeoApi.java | 35 --------
.../github/scribejava/apis/UbuntuOneApi.java | 43 ----------
.../com/github/scribejava/apis/VimeoApi.java | 35 --------
.../com/github/scribejava/apis/YammerApi.java | 42 ----------
.../ConstantContactTokenExtractor.java | 41 ----------
18 files changed, 1 insertion(+), 736 deletions(-)
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/DropBoxApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/EvernoteApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/GetGlueApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/MendeleyApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/MisoApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/NetProspexApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/PlurkApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/QWeiboApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/SapoApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/SimpleGeoApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/UbuntuOneApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/VimeoApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/YammerApi.java
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/constantcontact/ConstantContactTokenExtractor.java
diff --git a/changelog b/changelog
index 39853250c..b2d8c8a00 100644
--- a/changelog
+++ b/changelog
@@ -6,6 +6,7 @@
* fix GitHub API
* standardize authorization url generation for OAuth2
* update Facebook to v2.6
+ * cleanup: drop old APIs without Examples
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi.java
deleted file mode 100644
index a9f0e196c..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-public class ConstantContactApi extends DefaultApi10a {
-
- private static final String AUTHORIZE_URL
- = "https://oauth.constantcontact.com/ws/oauth/confirm_access?oauth_token=%s";
-
- protected ConstantContactApi() {
- }
-
- private static class InstanceHolder {
- private static final ConstantContactApi INSTANCE = new ConstantContactApi();
- }
-
- public static ConstantContactApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return "https://oauth.constantcontact.com/ws/oauth/access_token";
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return "https://oauth.constantcontact.com/ws/oauth/request_token";
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
deleted file mode 100644
index 94cbde0c8..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/ConstantContactApi2.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.apis.constantcontact.ConstantContactTokenExtractor;
-
-import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.extractors.TokenExtractor;
-import com.github.scribejava.core.model.OAuth2AccessToken;
-
-public class ConstantContactApi2 extends DefaultApi20 {
-
- protected ConstantContactApi2() {
- }
-
- private static class InstanceHolder {
- private static final ConstantContactApi2 INSTANCE = new ConstantContactApi2();
- }
-
- public static ConstantContactApi2 instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return "https://oauth2.constantcontact.com/oauth2/oauth/token";
- }
-
- @Override
- protected String getAuthorizationBaseUrl() {
- return "https://oauth2.constantcontact.com/oauth2/oauth/siteowner/authorize";
- }
-
- @Override
- public TokenExtractor getAccessTokenExtractor() {
- return ConstantContactTokenExtractor.instance();
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/DropBoxApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/DropBoxApi.java
deleted file mode 100644
index 99ae6f874..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/DropBoxApi.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-public class DropBoxApi extends DefaultApi10a {
-
- protected DropBoxApi() {
- }
-
- private static class InstanceHolder {
- private static final DropBoxApi INSTANCE = new DropBoxApi();
- }
-
- public static DropBoxApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return "https://api.dropbox.com/1/oauth/access_token";
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken 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/scribejava-apis/src/main/java/com/github/scribejava/apis/EvernoteApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/EvernoteApi.java
deleted file mode 100644
index 0bbd2ac62..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/EvernoteApi.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-public class EvernoteApi extends DefaultApi10a {
-
- protected EvernoteApi() {
- }
-
- private static class InstanceHolder {
- private static final EvernoteApi INSTANCE = new EvernoteApi();
- }
-
- public static EvernoteApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- protected String serviceUrl() {
- return "https://www.evernote.com";
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return serviceUrl() + "/oauth";
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return serviceUrl() + "/oauth";
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(serviceUrl() + "/OAuth.action?oauth_token=%s", requestToken.getToken());
- }
-
- /**
- * Sandbox endpoint
- */
- public static class Sandbox extends EvernoteApi {
-
- private Sandbox() {
- }
-
- private static class InstanceHolder {
- private static final Sandbox INSTANCE = new Sandbox();
- }
-
- public static Sandbox instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- protected String serviceUrl() {
- return "https://sandbox.evernote.com";
- }
- }
-
- /**
- * Yinxiang Biji endpoint
- */
- public static class Yinxiang extends EvernoteApi {
-
- private Yinxiang() {
- }
-
- private static class InstanceHolder {
- private static final Yinxiang INSTANCE = new Yinxiang();
- }
-
- public static Yinxiang instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- protected String serviceUrl() {
- return "https://app.yinxiang.com";
- }
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/GetGlueApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/GetGlueApi.java
deleted file mode 100644
index 758214390..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/GetGlueApi.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-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";
-
- protected GetGlueApi() {
- }
-
- private static class InstanceHolder {
- private static final GetGlueApi INSTANCE = new GetGlueApi();
- }
-
- public static GetGlueApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_TOKEN_RESOURCE;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi.java
deleted file mode 100644
index e5698bdb6..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/KaixinApi.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-import com.github.scribejava.core.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=%s";
-
- protected KaixinApi() {
- }
-
- private static class InstanceHolder {
- private static final KaixinApi INSTANCE = new KaixinApi();
- }
-
- public static KaixinApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken 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/scribejava-apis/src/main/java/com/github/scribejava/apis/MendeleyApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/MendeleyApi.java
deleted file mode 100644
index 9fab6e2ff..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/MendeleyApi.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-import com.github.scribejava.core.model.Verb;
-
-/**
- * @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";
-
- protected MendeleyApi() {
- }
-
- private static class InstanceHolder {
- private static final MendeleyApi INSTANCE = new MendeleyApi();
- }
-
- public static MendeleyApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @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(OAuth1RequestToken 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/scribejava-apis/src/main/java/com/github/scribejava/apis/MisoApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/MisoApi.java
deleted file mode 100644
index 4f0bb3bea..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/MisoApi.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-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";
-
- protected MisoApi() {
- }
-
- private static class InstanceHolder {
- private static final MisoApi INSTANCE = new MisoApi();
- }
-
- public static MisoApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ACCESS_TOKEN_RESOURCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_TOKEN_RESOURCE;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/NetProspexApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/NetProspexApi.java
deleted file mode 100644
index aa08abc4a..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/NetProspexApi.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-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";
-
- protected NetProspexApi() {
- }
-
- private static class InstanceHolder {
- private static final NetProspexApi INSTANCE = new NetProspexApi();
- }
-
- public static NetProspexApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/PlurkApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/PlurkApi.java
deleted file mode 100644
index f2b9c5ed2..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/PlurkApi.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-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";
-
- protected PlurkApi() {
- }
-
- private static class InstanceHolder {
- private static final PlurkApi INSTANCE = new PlurkApi();
- }
-
- public static PlurkApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken 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";
-
- private Mobile() {
- }
-
- private static class InstanceHolder {
- private static final Mobile INSTANCE = new Mobile();
- }
-
- public static Mobile instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/QWeiboApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/QWeiboApi.java
deleted file mode 100644
index ed4bfdb6b..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/QWeiboApi.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-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";
-
- protected QWeiboApi() {
- }
-
- private static class InstanceHolder {
- private static final QWeiboApi INSTANCE = new QWeiboApi();
- }
-
- public static QWeiboApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/SapoApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/SapoApi.java
deleted file mode 100644
index 524ddfcf7..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/SapoApi.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-import com.github.scribejava.core.model.Verb;
-
-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";
-
- protected SapoApi() {
- }
-
- private static class InstanceHolder {
- private static final SapoApi INSTANCE = new SapoApi();
- }
-
- public static SapoApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ACCESS_URL;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_URL;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken 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/scribejava-apis/src/main/java/com/github/scribejava/apis/SimpleGeoApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/SimpleGeoApi.java
deleted file mode 100644
index c8264b19b..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/SimpleGeoApi.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-public class SimpleGeoApi extends DefaultApi10a {
-
- private static final String ENDPOINT = "these are not used since SimpleGeo uses 2 legged OAuth";
-
- protected SimpleGeoApi() {
- }
-
- private static class InstanceHolder {
- private static final SimpleGeoApi INSTANCE = new SimpleGeoApi();
- }
-
- public static SimpleGeoApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return ENDPOINT;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ENDPOINT;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return ENDPOINT;
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/UbuntuOneApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/UbuntuOneApi.java
deleted file mode 100644
index 867b7556a..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/UbuntuOneApi.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-import com.github.scribejava.core.services.PlaintextSignatureService;
-import com.github.scribejava.core.services.SignatureService;
-
-public class UbuntuOneApi extends DefaultApi10a {
-
- private static final String AUTHORIZATION_URL = "https://one.ubuntu.com/oauth/authorize/?oauth_token=%s";
-
- protected UbuntuOneApi() {
- }
-
- private static class InstanceHolder {
- private static final UbuntuOneApi INSTANCE = new UbuntuOneApi();
- }
-
- public static UbuntuOneApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return "https://one.ubuntu.com/oauth/access/";
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken 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/scribejava-apis/src/main/java/com/github/scribejava/apis/VimeoApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/VimeoApi.java
deleted file mode 100644
index 63ecb844d..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/VimeoApi.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-public class VimeoApi extends DefaultApi10a {
-
- private static final String AUTHORIZATION_URL = "http://vimeo.com/oauth/authorize?oauth_token=%s";
-
- protected VimeoApi() {
- }
-
- private static class InstanceHolder {
- private static final VimeoApi INSTANCE = new VimeoApi();
- }
-
- public static VimeoApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @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(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/YammerApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/YammerApi.java
deleted file mode 100644
index 269e61395..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/YammerApi.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-import com.github.scribejava.core.services.PlaintextSignatureService;
-import com.github.scribejava.core.services.SignatureService;
-
-public class YammerApi extends DefaultApi10a {
-
- private static final String AUTHORIZATION_URL = "https://www.yammer.com/oauth/authorize?oauth_token=%s";
-
- protected YammerApi() {
- }
-
- private static class InstanceHolder {
- private static final YammerApi INSTANCE = new YammerApi();
- }
-
- public static YammerApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @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(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZATION_URL, requestToken.getToken());
- }
-
- @Override
- public SignatureService getSignatureService() {
- return new PlaintextSignatureService();
- }
-}
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/constantcontact/ConstantContactTokenExtractor.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/constantcontact/ConstantContactTokenExtractor.java
deleted file mode 100644
index f385eba1d..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/constantcontact/ConstantContactTokenExtractor.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.github.scribejava.apis.constantcontact;
-
-import com.github.scribejava.core.exceptions.OAuthException;
-import com.github.scribejava.core.extractors.TokenExtractor;
-import com.github.scribejava.core.model.OAuth2AccessToken;
-import com.github.scribejava.core.utils.OAuthEncoder;
-import com.github.scribejava.core.utils.Preconditions;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class ConstantContactTokenExtractor implements TokenExtractor {
-
- private static final String REGEXP = "\"access_token\"\\s*:\\s*\"([^&\"]+)\"";
-
- protected ConstantContactTokenExtractor() {
- }
-
- private static class InstanceHolder {
-
- private static final ConstantContactTokenExtractor INSTANCE = new ConstantContactTokenExtractor();
- }
-
- public static ConstantContactTokenExtractor instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public OAuth2AccessToken extract(String response) {
- Preconditions.checkEmptyString(response,
- "Response body is incorrect. Can't extract a token from an empty string");
-
- final Matcher matcher = Pattern.compile(REGEXP).matcher(response);
- if (matcher.find()) {
- final String token = OAuthEncoder.decode(matcher.group(1));
- return new OAuth2AccessToken(token, response);
- } else {
- throw new OAuthException("Response body is incorrect. Can't extract a token from this: '"
- + response + "'", null);
- }
- }
-}
From 1e21fd1e6ccca1f0cf4af7177bacc223a31d9eec Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 18:51:23 +0300
Subject: [PATCH 060/250] remove old APIs with outdated domains
---
changelog | 2 +-
.../github/scribejava/apis/LoveFilmApi.java | 37 ----------
.../apis/examples/LoveFilmExample.java | 70 -------------------
3 files changed, 1 insertion(+), 108 deletions(-)
delete mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/LoveFilmApi.java
delete mode 100644 scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java
diff --git a/changelog b/changelog
index b2d8c8a00..7a7c8540b 100644
--- a/changelog
+++ b/changelog
@@ -6,7 +6,7 @@
* fix GitHub API
* standardize authorization url generation for OAuth2
* update Facebook to v2.6
- * cleanup: drop old APIs without Examples
+ * cleanup: drop old APIs without Examples and with outdated domains
[2.5.3]
* fix - do not send two Content-Type header in async requests
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/LoveFilmApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/LoveFilmApi.java
deleted file mode 100644
index 3c43ac309..000000000
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/LoveFilmApi.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.github.scribejava.apis;
-
-import com.github.scribejava.core.builder.api.DefaultApi10a;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-
-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";
-
- protected LoveFilmApi() {
- }
-
- private static class InstanceHolder {
- private static final LoveFilmApi INSTANCE = new LoveFilmApi();
- }
-
- public static LoveFilmApi instance() {
- return InstanceHolder.INSTANCE;
- }
-
- @Override
- public String getRequestTokenEndpoint() {
- return REQUEST_TOKEN_URL;
- }
-
- @Override
- public String getAccessTokenEndpoint() {
- return ACCESS_TOKEN_URL;
- }
-
- @Override
- public String getAuthorizationUrl(OAuth1RequestToken requestToken) {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
-}
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java
deleted file mode 100644
index 161278ad5..000000000
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LoveFilmExample.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.github.scribejava.apis.examples;
-
-import java.util.Scanner;
-import com.github.scribejava.core.builder.ServiceBuilder;
-import com.github.scribejava.apis.LoveFilmApi;
-import com.github.scribejava.core.model.OAuth1AccessToken;
-import com.github.scribejava.core.model.OAuth1RequestToken;
-import com.github.scribejava.core.model.OAuthRequest;
-import com.github.scribejava.core.model.Response;
-import com.github.scribejava.core.model.Verb;
-import com.github.scribejava.core.oauth.OAuth10aService;
-
-public abstract 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
- final String apiKey = "your_key";
- final String apiSecret = "your_secret";
- final OAuth10aService service = new ServiceBuilder()
- .apiKey(apiKey)
- .apiSecret(apiSecret)
- .build(LoveFilmApi.instance());
- final 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.");
- final OAuth1RequestToken requestToken = service.getRequestToken();
- System.out.println("Got it ... ");
- System.out.println(requestToken.getToken());
-
- // 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 ScribeJava here:");
- System.out.println(authorizationUrl);
- System.out.println("And paste the authorization code here");
- System.out.print(">>");
- final String oauthVerifier = 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 OAuth1AccessToken accessToken = service.getAccessToken(requestToken, oauthVerifier);
- System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken
- + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
- 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);
- 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 ScribeJava! :)");
-
- }
-}
From b279cf6d0bdd2c7d66be03cb220484650c01c696 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 19:07:37 +0300
Subject: [PATCH 061/250] update list of APIs in the Readme (on the main github
page)
---
README.md | 64 ++++++++++++++++++++++++++++++-------------------------
1 file changed, 35 insertions(+), 29 deletions(-)
diff --git a/README.md b/README.md
index 8f2bb934a..59121b5ad 100644
--- a/README.md
+++ b/README.md
@@ -25,35 +25,41 @@ You can use ning async http client out-of-box, just use ServiceBuilderAsync
### Supports all major 1.0a and 2.0 OAuth APIs out-of-the-box
-* Google
-
-* Facebook
-
-* Yahoo
-
-* LinkedIn
-
-* Twitter
-
-* Foursquare
-
-* Evernote
-
-* Vimeo
-
-* Windows Live
-
-* Odnoklassniki
-
-* Mail.ru
-
-* LinkedIn2.0
-
-* Google2.0
-
-* GitHub
-
-* and many more! check the [examples folder](https://github.com/scribejava/scribejava/tree/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples)
+* AWeber (http://www.aweber.com/)
+* Digg (http://digg.com/)
+* Доктор на работе (http://www.doktornarabote.ru/)
+* Facebook (https://www.facebook.com/)
+* Flickr (https://www.flickr.com/)
+* Foursquare (https://foursquare.com/)
+* Freelancer (https://www.freelancer.com/)
+* Genius (http://genius.com/)
+* GitHub (https://github.com/)
+* Google (https://www.google.ru/)
+* HeadHunter ХэдХантер (https://hh.ru/)
+* Imgur (http://imgur.com/)
+* Kaixin 开心网 (http://www.kaixin001.com/)
+* LinkedIn (https://www.linkedin.com/)
+* Microsoft Live (https://login.live.com/)
+* Mail.Ru (https://mail.ru/)
+* Meetup (http://www.meetup.com/)
+* NetEase (http://www.163.com/)
+* Odnoklassniki Одноклассники (http://ok.ru/)
+* Pinterest (https://www.pinterest.com/)
+* 500px (https://500px.com/)
+* Renren (http://renren.com/)
+* Sina (http://www.sina.com.cn/ http://weibo.com/login.php)
+* Skyrock (http://skyrock.com/)
+* sohu 搜狐 (http://www.sohu.com/)
+* StackExchange (http://stackexchange.com/)
+* Trello (https://trello.com/)
+* Tumblr (https://www.tumblr.com/)
+* TUT.BY (http://www.tut.by/)
+* Twitter (https://twitter.com/)
+* Viadeo (http://viadeo.com/)
+* VK ВКонтакте (http://vk.com/)
+* XING (https://www.xing.com/)
+* Yahoo (https://www.yahoo.com/)
+* check the [examples folder](https://github.com/scribejava/scribejava/tree/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples)
### Small and modular
From abc4b5bc554fc8ede2fd2dfcc8441d5cbeb78d65 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 19:29:55 +0300
Subject: [PATCH 062/250] send client credentials in grant_type=password
optionally (in case they were issued and are not nulls)
---
.../scribejava/core/oauth/OAuth20Service.java | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index ef5494eac..3813d28ba 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -172,11 +172,14 @@ protected T createAccessTokenPasswordGrantRequest(St
request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.PASSWORD);
- request.addHeader(OAuthConstants.HEADER,
- OAuthConstants.BASIC + ' '
- + Base64Encoder.getInstance()
- .encode(String.format("%s:%s", config.getApiKey(), config.getApiSecret())
- .getBytes(Charset.forName("UTF-8"))));
+ final String apiKey = config.getApiKey();
+ final String apiSecret = config.getApiSecret();
+ if (apiKey != null && apiSecret != null) {
+ request.addHeader(OAuthConstants.HEADER,
+ OAuthConstants.BASIC + ' '
+ + Base64Encoder.getInstance()
+ .encode(String.format("%s:%s", apiKey, apiSecret).getBytes(Charset.forName("UTF-8"))));
+ }
return request;
}
From ceb06d1491b63b2d150f06e613e26d4960b62d5c Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 19:41:48 +0300
Subject: [PATCH 063/250] prepare 2.6.0 release
---
README.md | 4 ++--
changelog | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 59121b5ad..031c4dd53 100644
--- a/README.md
+++ b/README.md
@@ -84,7 +84,7 @@ You can pull ScribeJava from the central maven repository, just add these to you
com.github.scribejava
scribejava-apis
- 2.5.3
+ 2.6.0
```
@@ -93,7 +93,7 @@ And in case you need just core classes (that's it, without any external API (FB,
com.github.scribejava
scribejava-core
- 2.5.3
+ 2.6.0
```
diff --git a/changelog b/changelog
index 7a7c8540b..0540b4dd9 100644
--- a/changelog
+++ b/changelog
@@ -1,4 +1,4 @@
-[SNAPSHOT]
+[2.6.0]
* simplify async/sync usages
* add optional "User-Agent" config option to use while making http calls
* refactor usage of grant_type [authorization_code|refresh_token|password|etc]
From 3ca5c9f2df3c89d8eaefb8d0fc22b147f8eaec98 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 19:42:41 +0300
Subject: [PATCH 064/250] [maven-release-plugin] prepare release
scribejava-2.6.0
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 83388dab5..c1d553280 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.5.4-SNAPSHOT
+ 2.6.0
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 958bf5563..a9da5b88e 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.4-SNAPSHOT
+ 2.6.0
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 50f5e9fc0..c9a743078 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.5.4-SNAPSHOT
+ 2.6.0
../pom.xml
From 9a83b6cfeb7f2245a10ac579563c73c2c4024f7d Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 23 May 2016 19:42:46 +0300
Subject: [PATCH 065/250] [maven-release-plugin] prepare for next development
iteration
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index c1d553280..a5a66b89f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.6.0
+ 2.6.1-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index a9da5b88e..6a8f03dfc 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.6.0
+ 2.6.1-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index c9a743078..b4a2894c9 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.6.0
+ 2.6.1-SNAPSHOT
../pom.xml
From 010b37a4e0f3f3b8e8207a110b879943e6096694 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 25 May 2016 16:55:18 +0300
Subject: [PATCH 066/250] make http async client implementation be more
pluggable
---
changelog | 3 +
.../ning/OAuthAsyncCompletionHandler.java | 52 ++++++++++
.../core/model/AbstractRequest.java | 2 +-
.../core/model/OAuthRequestAsync.java | 96 +------------------
.../core/oauth/OAuth10aService.java | 13 +--
.../scribejava/core/oauth/OAuth20Service.java | 32 ++-----
.../scribejava/core/oauth/OAuthService.java | 43 ++++++++-
.../core/oauth/OAuth20ServiceUnit.java | 3 +-
8 files changed, 110 insertions(+), 134 deletions(-)
create mode 100644 scribejava-core/src/main/java/com/github/scribejava/core/async/ning/OAuthAsyncCompletionHandler.java
diff --git a/changelog b/changelog
index 0540b4dd9..6d1d5fea4 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+[SNAPSHOT]
+ * make http async client implementation be more pluggable
+
[2.6.0]
* simplify async/sync usages
* add optional "User-Agent" config option to use while making http calls
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/async/ning/OAuthAsyncCompletionHandler.java b/scribejava-core/src/main/java/com/github/scribejava/core/async/ning/OAuthAsyncCompletionHandler.java
new file mode 100644
index 000000000..adbcf10bb
--- /dev/null
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/async/ning/OAuthAsyncCompletionHandler.java
@@ -0,0 +1,52 @@
+package com.github.scribejava.core.async.ning;
+
+import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
+import com.github.scribejava.core.model.OAuthRequestAsync;
+import com.github.scribejava.core.model.Response;
+import com.ning.http.client.AsyncCompletionHandler;
+import com.ning.http.client.FluentCaseInsensitiveStringsMap;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class OAuthAsyncCompletionHandler extends AsyncCompletionHandler {
+
+ private final OAuthAsyncRequestCallback callback;
+ private final OAuthRequestAsync.ResponseConverter converter;
+
+ public OAuthAsyncCompletionHandler(OAuthAsyncRequestCallback callback,
+ OAuthRequestAsync.ResponseConverter converter) {
+ this.callback = callback;
+ this.converter = converter;
+ }
+
+ @Override
+ public T onCompleted(com.ning.http.client.Response ningResponse) throws IOException {
+ final FluentCaseInsensitiveStringsMap map = ningResponse.getHeaders();
+ final Map headersMap = new HashMap<>();
+ for (FluentCaseInsensitiveStringsMap.Entry> header : map) {
+ final StringBuilder value = new StringBuilder();
+ for (String str : header.getValue()) {
+ value.append(str);
+ }
+ headersMap.put(header.getKey(), value.toString());
+ }
+ final Response response = new Response(ningResponse.getStatusCode(), ningResponse.getStatusText(), headersMap,
+ ningResponse.getResponseBody(), ningResponse.getResponseBodyAsStream());
+
+ @SuppressWarnings("unchecked")
+ final T t = converter == null ? (T) response : converter.convert(response);
+ if (callback != null) {
+ callback.onCompleted(t);
+ }
+ return t;
+ }
+
+ @Override
+ public void onThrowable(Throwable t) {
+ if (callback != null) {
+ callback.onThrowable(t);
+ }
+ }
+};
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/AbstractRequest.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/AbstractRequest.java
index c48f83c74..4db6ccec7 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/AbstractRequest.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/AbstractRequest.java
@@ -15,8 +15,8 @@
public abstract class AbstractRequest {
public static final String DEFAULT_CONTENT_TYPE = "application/x-www-form-urlencoded";
+ public static final String CONTENT_TYPE = "Content-Type";
protected static final String CONTENT_LENGTH = "Content-Length";
- protected static final String CONTENT_TYPE = "Content-Type";
private static final String OAUTH_PREFIX = "oauth_";
private final String url;
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
index fc422e8e6..1a92f0699 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java
@@ -2,46 +2,17 @@
import com.github.scribejava.core.exceptions.OAuthException;
import com.github.scribejava.core.oauth.OAuthService;
-import com.ning.http.client.AsyncCompletionHandler;
-import com.ning.http.client.AsyncHttpClient;
-import com.ning.http.client.FluentCaseInsensitiveStringsMap;
-import com.ning.http.client.ProxyServer;
import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
import java.util.concurrent.Future;
public class OAuthRequestAsync extends AbstractRequest {
- public static final ResponseConverter RESPONSE_CONVERTER = new ResponseConverter() {
- @Override
- public Response convert(com.ning.http.client.Response response) throws IOException {
- final FluentCaseInsensitiveStringsMap map = response.getHeaders();
- final Map headersMap = new HashMap<>();
- for (FluentCaseInsensitiveStringsMap.Entry> header : map) {
- final StringBuilder value = new StringBuilder();
- for (String str : header.getValue()) {
- value.append(str);
- }
- headersMap.put(header.getKey(), value.toString());
- }
- return new Response(response.getStatusCode(), response.getStatusText(), headersMap,
- response.getResponseBody(), response.getResponseBodyAsStream());
- }
- };
-
public OAuthRequestAsync(Verb verb, String url, OAuthService service) {
super(verb, url, service);
}
public Future sendAsync(OAuthAsyncRequestCallback callback, ResponseConverter converter) {
- return sendAsync(callback, converter, null);
- }
-
- public Future sendAsync(OAuthAsyncRequestCallback callback, ResponseConverter converter,
- ProxyServer proxyServer) {
final ForceTypeOfHttpRequest forceTypeOfHttpRequest = ScribeJavaConfig.getForceTypeOfHttpRequests();
if (ForceTypeOfHttpRequest.FORCE_SYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
throw new OAuthException("Cannot use async operations, only sync");
@@ -51,76 +22,15 @@ public Future sendAsync(OAuthAsyncRequestCallback callback, ResponseCo
if (ForceTypeOfHttpRequest.PREFER_SYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
config.log("Cannot use async operations, only sync");
}
- final String completeUrl = getCompleteUrl();
- final AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
- final AsyncHttpClient asyncHttpClient = service.getAsyncHttpClient();
- final Map headers = getHeaders();
- switch (getVerb()) {
- case GET:
- boundRequestBuilder = asyncHttpClient.prepareGet(completeUrl);
- break;
- case POST:
- AsyncHttpClient.BoundRequestBuilder requestBuilder = asyncHttpClient.preparePost(completeUrl);
- if (!headers.containsKey(CONTENT_TYPE)) {
- requestBuilder = requestBuilder.addHeader(CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
- }
- boundRequestBuilder = requestBuilder.setBody(getBodyContents());
- break;
- default:
- throw new IllegalArgumentException("message build error: unknown verb type");
- }
-
- for (Map.Entry header : headers.entrySet()) {
- boundRequestBuilder.addHeader(header.getKey(), header.getValue());
- }
- final String userAgent = config.getUserAgent();
- if (userAgent != null) {
- boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
- }
-
- if (proxyServer != null) {
- boundRequestBuilder.setProxyServer(proxyServer);
- }
- return boundRequestBuilder.execute(new OAuthAsyncCompletionHandler<>(callback, converter));
+ return service.executeAsync(getHeaders(), getVerb(), getCompleteUrl(), getBodyContents(), callback, converter);
}
- private static class OAuthAsyncCompletionHandler extends AsyncCompletionHandler {
-
- private final OAuthAsyncRequestCallback callback;
- private final ResponseConverter converter;
-
- OAuthAsyncCompletionHandler(OAuthAsyncRequestCallback callback, ResponseConverter converter) {
- this.callback = callback;
- this.converter = converter;
- }
-
- @Override
- public T onCompleted(com.ning.http.client.Response response) throws IOException {
- final T t = converter.convert(response);
- if (callback != null) {
- callback.onCompleted(t);
- }
- return t;
- }
-
- @Override
- public void onThrowable(Throwable t) {
- if (callback != null) {
- callback.onThrowable(t);
- }
- }
- };
-
public Future sendAsync(OAuthAsyncRequestCallback callback) {
- return sendAsync(callback, RESPONSE_CONVERTER, null);
- }
-
- public Future sendAsync(OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
- return sendAsync(callback, RESPONSE_CONVERTER, proxyServer);
+ return sendAsync(callback, null);
}
public interface ResponseConverter {
- T convert(com.ning.http.client.Response response) throws IOException;
+ T convert(Response response) throws IOException;
}
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
index f2516d8c2..a93c4c3ec 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
@@ -1,6 +1,5 @@
package com.github.scribejava.core.oauth;
-import com.ning.http.client.ProxyServer;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.Future;
@@ -96,11 +95,6 @@ public final OAuth1AccessToken getAccessToken(OAuth1RequestToken requestToken, S
*/
public final Future getAccessTokenAsync(OAuth1RequestToken requestToken, String oauthVerifier,
OAuthAsyncRequestCallback callback) {
- return getAccessTokenAsync(requestToken, oauthVerifier, callback, null);
- }
-
- public final Future getAccessTokenAsync(OAuth1RequestToken requestToken, String oauthVerifier,
- OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
final OAuthConfig config = getConfig();
config.log("async obtaining access token from " + api.getAccessTokenEndpoint());
final OAuthRequestAsync request
@@ -108,11 +102,10 @@ public final Future getAccessTokenAsync(OAuth1RequestToken re
prepareAccessTokenRequest(request, requestToken, oauthVerifier);
return request.sendAsync(callback, new OAuthRequestAsync.ResponseConverter() {
@Override
- public OAuth1AccessToken convert(com.ning.http.client.Response response) throws IOException {
- return getApi().getAccessTokenExtractor()
- .extract(OAuthRequestAsync.RESPONSE_CONVERTER.convert(response).getBody());
+ public OAuth1AccessToken convert(Response response) throws IOException {
+ return getApi().getAccessTokenExtractor().extract(response.getBody());
}
- }, proxyServer);
+ });
}
protected void prepareAccessTokenRequest(AbstractRequest request, OAuth1RequestToken requestToken,
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index 3813d28ba..b9efbf0f3 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -1,7 +1,6 @@
package com.github.scribejava.core.oauth;
import com.github.scribejava.core.services.Base64Encoder;
-import com.ning.http.client.ProxyServer;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.concurrent.Future;
@@ -14,6 +13,7 @@
import com.github.scribejava.core.model.OAuthConstants;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.OAuthRequestAsync;
+import com.github.scribejava.core.model.Response;
import java.util.Map;
public class OAuth20Service extends OAuthService {
@@ -39,15 +39,14 @@ protected OAuth2AccessToken sendAccessTokenRequestSync(OAuthRequest request) {
//async version, protected to facilitate mocking
protected Future sendAccessTokenRequestAsync(OAuthRequestAsync request,
- OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
+ OAuthAsyncRequestCallback callback) {
return request.sendAsync(callback, new OAuthRequestAsync.ResponseConverter() {
@Override
- public OAuth2AccessToken convert(com.ning.http.client.Response response) throws IOException {
- return getApi().getAccessTokenExtractor()
- .extract(OAuthRequestAsync.RESPONSE_CONVERTER.convert(response).getBody());
+ public OAuth2AccessToken convert(Response response) throws IOException {
+ return getApi().getAccessTokenExtractor().extract(response.getBody());
}
- }, proxyServer);
+ });
}
public final OAuth2AccessToken getAccessToken(String code) {
@@ -67,15 +66,10 @@ public final OAuth2AccessToken getAccessToken(String code) {
*/
public final Future getAccessTokenAsync(String code,
OAuthAsyncRequestCallback callback) {
- return getAccessTokenAsync(code, callback, null);
- }
-
- public final Future getAccessTokenAsync(String code,
- OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
final OAuthRequestAsync request = createAccessTokenRequest(code,
new OAuthRequestAsync(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
- return sendAccessTokenRequestAsync(request, callback, proxyServer);
+ return sendAccessTokenRequestAsync(request, callback);
}
protected T createAccessTokenRequest(String code, T request) {
@@ -101,15 +95,10 @@ public final OAuth2AccessToken refreshAccessToken(String refreshToken) {
public final Future refreshAccessTokenAsync(String refreshToken,
OAuthAsyncRequestCallback callback) {
- return refreshAccessTokenAsync(refreshToken, callback, null);
- }
-
- public final Future refreshAccessTokenAsync(String refreshToken,
- OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
final OAuthRequestAsync request = createRefreshTokenRequest(refreshToken,
new OAuthRequestAsync(api.getAccessTokenVerb(), api.getRefreshTokenEndpoint(), this));
- return sendAccessTokenRequestAsync(request, callback, proxyServer);
+ return sendAccessTokenRequestAsync(request, callback);
}
protected T createRefreshTokenRequest(String refreshToken, T request) {
@@ -148,15 +137,10 @@ public final OAuth2AccessToken getAccessTokenPasswordGrant(String uname, String
*/
public final Future getAccessTokenPasswordGrantAsync(String uname, String password,
OAuthAsyncRequestCallback callback) {
- return getAccessTokenPasswordGrantAsync(uname, password, callback, null);
- }
-
- public final Future getAccessTokenPasswordGrantAsync(String uname, String password,
- OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
final OAuthRequestAsync request = createAccessTokenPasswordGrantRequest(uname, password,
new OAuthRequestAsync(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
- return sendAccessTokenRequestAsync(request, callback, proxyServer);
+ return sendAccessTokenRequestAsync(request, callback);
}
protected T createAccessTokenPasswordGrantRequest(String username, String password,
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
index 3b0e1870e..b1d8c8eee 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
@@ -1,11 +1,20 @@
package com.github.scribejava.core.oauth;
+import com.github.scribejava.core.async.ning.OAuthAsyncCompletionHandler;
import com.ning.http.client.AsyncHttpClient;
import com.github.scribejava.core.exceptions.OAuthException;
+import com.github.scribejava.core.model.AbstractRequest;
+import static com.github.scribejava.core.model.AbstractRequest.DEFAULT_CONTENT_TYPE;
import com.github.scribejava.core.model.ForceTypeOfHttpRequest;
+import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
import com.github.scribejava.core.model.OAuthConfig;
+import com.github.scribejava.core.model.OAuthConstants;
+import com.github.scribejava.core.model.OAuthRequestAsync;
import com.github.scribejava.core.model.ScribeJavaConfig;
+import com.github.scribejava.core.model.Verb;
import com.ning.http.client.AsyncHttpClientConfig;
+import java.util.Map;
+import java.util.concurrent.Future;
/**
* The main ScribeJava object.
@@ -43,10 +52,6 @@ public OAuthService(OAuthConfig config) {
}
}
- public AsyncHttpClient getAsyncHttpClient() {
- return asyncHttpClient;
- }
-
public void closeAsyncClient() {
asyncHttpClient.close();
}
@@ -61,4 +66,34 @@ public OAuthConfig getConfig() {
* @return OAuth version as string
*/
public abstract String getVersion();
+
+ public Future executeAsync(Map headers, Verb httpVerb, String completeUrl,
+ String bodyContents, OAuthAsyncRequestCallback callback,
+ OAuthRequestAsync.ResponseConverter converter) {
+ final AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
+ switch (httpVerb) {
+ case GET:
+ boundRequestBuilder = asyncHttpClient.prepareGet(completeUrl);
+ break;
+ case POST:
+ AsyncHttpClient.BoundRequestBuilder requestBuilder = asyncHttpClient.preparePost(completeUrl);
+ if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
+ requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
+ }
+ boundRequestBuilder = requestBuilder.setBody(bodyContents);
+ break;
+ default:
+ throw new IllegalArgumentException("message build error: unknown verb type");
+ }
+
+ for (Map.Entry header : headers.entrySet()) {
+ boundRequestBuilder.addHeader(header.getKey(), header.getValue());
+ }
+ final String userAgent = config.getUserAgent();
+ if (userAgent != null) {
+ boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
+ }
+
+ return boundRequestBuilder.execute(new OAuthAsyncCompletionHandler<>(callback, converter));
+ }
}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceUnit.java b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceUnit.java
index 07fc9680c..4d75c5ece 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceUnit.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceUnit.java
@@ -10,7 +10,6 @@
import com.github.scribejava.core.model.OAuthRequestAsync;
import com.github.scribejava.core.model.Parameter;
import com.google.gson.Gson;
-import com.ning.http.client.ProxyServer;
import java.util.HashMap;
import java.util.Map;
@@ -50,7 +49,7 @@ private String prepareRawResponse(T request) {
@Override
protected Future sendAccessTokenRequestAsync(OAuthRequestAsync request,
- OAuthAsyncRequestCallback callback, ProxyServer proxyServer) {
+ OAuthAsyncRequestCallback callback) {
final OAuth2AccessToken accessToken = new OAuth2AccessToken(TOKEN, prepareRawResponse(request));
From 34b33ecac84da4dbab8dc71593d314c3bc9cb790 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 25 May 2016 16:55:18 +0300
Subject: [PATCH 067/250] add async-http-client 2.0 support (thanks to Sai
Chandrasekharan https://github.com/saichand)
---
changelog | 1 +
pom.xml | 6 ++
...ple.java => FacebookAsyncNingExample.java} | 5 +-
...mple.java => Google20AsyncAHCExample.java} | 11 +--
.../apis/examples/MailruAsyncExample.java | 3 +-
.../ahc/OAuthAsyncCompletionHandler.java | 47 ++++++++++
.../core/builder/ServiceBuilder.java | 27 ++++--
.../scribejava/core/model/OAuthConfig.java | 32 ++++---
.../scribejava/core/oauth/OAuthService.java | 88 +++++++++++++++----
9 files changed, 177 insertions(+), 43 deletions(-)
rename scribejava-apis/src/test/java/com/github/scribejava/apis/examples/{FacebookAsyncExample.java => FacebookAsyncNingExample.java} (97%)
rename scribejava-apis/src/test/java/com/github/scribejava/apis/examples/{Google20AsyncExample.java => Google20AsyncAHCExample.java} (94%)
create mode 100644 scribejava-core/src/main/java/com/github/scribejava/core/async/ahc/OAuthAsyncCompletionHandler.java
diff --git a/changelog b/changelog
index 6d1d5fea4..2080cb59f 100644
--- a/changelog
+++ b/changelog
@@ -1,5 +1,6 @@
[SNAPSHOT]
* make http async client implementation be more pluggable
+ * add async-http-client 2.0 support (thanks to Sai Chandrasekharan https://github.com/saichand)
[2.6.0]
* simplify async/sync usages
diff --git a/pom.xml b/pom.xml
index a5a66b89f..e72fe52e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,6 +99,12 @@
1.9.38
provided
+
+ org.asynchttpclient
+ async-http-client
+ 2.0.3
+ provided
+
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncNingExample.java
similarity index 97%
rename from scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
rename to scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncNingExample.java
index 65bee0cf9..ae0d1d09a 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookAsyncNingExample.java
@@ -13,13 +13,14 @@
import com.github.scribejava.core.model.ScribeJavaConfig;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
-public abstract class FacebookAsyncExample {
+public abstract class FacebookAsyncNingExample {
private static final String NETWORK_NAME = "Facebook";
private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/v2.6/me";
- public static void main(String... args) throws InterruptedException, ExecutionException {
+ public static void main(String... args) throws InterruptedException, ExecutionException, IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncAHCExample.java
similarity index 94%
rename from scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncExample.java
rename to scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncAHCExample.java
index f8b021041..bfd88430a 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20AsyncAHCExample.java
@@ -11,26 +11,27 @@
import com.github.scribejava.core.model.ScribeJavaConfig;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
-import com.ning.http.client.AsyncHttpClientConfig;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;
+import org.asynchttpclient.AsyncHttpClientConfig;
+import org.asynchttpclient.DefaultAsyncHttpClientConfig;
-public abstract class Google20AsyncExample {
+public abstract class Google20AsyncAHCExample {
private static final String NETWORK_NAME = "G+ Async";
private static final String PROTECTED_RESOURCE_URL = "https://www.googleapis.com/plus/v1/people/me";
- public static void main(String... args) throws InterruptedException, ExecutionException {
+ public static void main(String... args) throws InterruptedException, ExecutionException, IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
final String secretState = "secret" + new Random().nextInt(999_999);
ScribeJavaConfig.setForceTypeOfHttpRequests(ForceTypeOfHttpRequest.FORCE_ASYNC_ONLY_HTTP_REQUESTS);
- final AsyncHttpClientConfig clientConfig = new AsyncHttpClientConfig.Builder()
+ final AsyncHttpClientConfig clientConfig = new DefaultAsyncHttpClientConfig.Builder()
.setMaxConnections(5)
.setRequestTimeout(10_000)
- .setAllowPoolingConnections(false)
.setPooledConnectionIdleTimeout(1_000)
.setReadTimeout(1_000)
.build();
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
index 26a61a456..c53e5d856 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruAsyncExample.java
@@ -10,6 +10,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class MailruAsyncExample {
@@ -17,7 +18,7 @@ public abstract class MailruAsyncExample {
private static final String PROTECTED_RESOURCE_URL
= "http://www.appsmail.ru/platform/api?method=users.getInfo&secure=1";
- public static void main(String... args) throws InterruptedException, ExecutionException {
+ public static void main(String... args) throws InterruptedException, ExecutionException, IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/async/ahc/OAuthAsyncCompletionHandler.java b/scribejava-core/src/main/java/com/github/scribejava/core/async/ahc/OAuthAsyncCompletionHandler.java
new file mode 100644
index 000000000..b556fb6ad
--- /dev/null
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/async/ahc/OAuthAsyncCompletionHandler.java
@@ -0,0 +1,47 @@
+package com.github.scribejava.core.async.ahc;
+
+import com.github.scribejava.core.model.OAuthAsyncRequestCallback;
+import com.github.scribejava.core.model.OAuthRequestAsync;
+import com.github.scribejava.core.model.Response;
+import io.netty.handler.codec.http.HttpHeaders;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import org.asynchttpclient.AsyncCompletionHandler;
+
+public class OAuthAsyncCompletionHandler extends AsyncCompletionHandler {
+
+ private final OAuthAsyncRequestCallback callback;
+ private final OAuthRequestAsync.ResponseConverter converter;
+
+ public OAuthAsyncCompletionHandler(OAuthAsyncRequestCallback callback,
+ OAuthRequestAsync.ResponseConverter converter) {
+ this.callback = callback;
+ this.converter = converter;
+ }
+
+ @Override
+ public T onCompleted(org.asynchttpclient.Response ahcResponse) throws IOException {
+ final HttpHeaders map = ahcResponse.getHeaders();
+ final Map headersMap = new HashMap<>();
+ for (Map.Entry header : map) {
+ headersMap.put(header.getKey(), header.getValue());
+ }
+ final Response response = new Response(ahcResponse.getStatusCode(), ahcResponse.getStatusText(), headersMap,
+ ahcResponse.getResponseBody(), ahcResponse.getResponseBodyAsStream());
+
+ @SuppressWarnings("unchecked")
+ final T t = converter == null ? (T) response : converter.convert(response);
+ if (callback != null) {
+ callback.onCompleted(t);
+ }
+ return t;
+ }
+
+ @Override
+ public void onThrowable(Throwable t) {
+ if (callback != null) {
+ callback.onThrowable(t);
+ }
+ }
+};
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
index a6404043f..57f99cc0a 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java
@@ -7,7 +7,6 @@
import com.github.scribejava.core.model.SignatureType;
import com.github.scribejava.core.oauth.OAuthService;
import com.github.scribejava.core.utils.Preconditions;
-import com.ning.http.client.AsyncHttpClientConfig;
/**
* Implementation of the Builder pattern, with a fluent interface that creates a {@link OAuthService}
@@ -29,8 +28,11 @@ public class ServiceBuilder {
private Integer readTimeout;
//async version only
- private AsyncHttpClientConfig asyncHttpClientConfig;
- private String asyncHttpProviderClassName;
+ //ning 1.9
+ private com.ning.http.client.AsyncHttpClientConfig ningAsyncHttpClientConfig;
+ private String ningAsyncHttpProviderClassName;
+ //AHC 2.0
+ private org.asynchttpclient.AsyncHttpClientConfig ahcAsyncHttpClientConfig;
public ServiceBuilder() {
callback = OAuthConstants.OUT_OF_BAND;
@@ -133,14 +135,24 @@ public ServiceBuilder readTimeout(Integer readTimeout) {
return this;
}
- public ServiceBuilder asyncHttpClientConfig(AsyncHttpClientConfig asyncHttpClientConfig) {
+ public ServiceBuilder asyncHttpClientConfig(com.ning.http.client.AsyncHttpClientConfig asyncHttpClientConfig) {
Preconditions.checkNotNull(asyncHttpClientConfig, "asyncHttpClientConfig can't be null");
- this.asyncHttpClientConfig = asyncHttpClientConfig;
+ ningAsyncHttpClientConfig = asyncHttpClientConfig;
+ ahcAsyncHttpClientConfig = null;
+ return this;
+ }
+
+ public ServiceBuilder asyncHttpClientConfig(org.asynchttpclient.AsyncHttpClientConfig asyncHttpClientConfig) {
+ Preconditions.checkNotNull(asyncHttpClientConfig, "asyncHttpClientConfig can't be null");
+ ahcAsyncHttpClientConfig = asyncHttpClientConfig;
+ ningAsyncHttpClientConfig = null;
+ ningAsyncHttpProviderClassName = null;
return this;
}
public ServiceBuilder asyncHttpProviderClassName(String asyncHttpProviderClassName) {
- this.asyncHttpProviderClassName = asyncHttpProviderClassName;
+ this.ningAsyncHttpProviderClassName = asyncHttpProviderClassName;
+ ahcAsyncHttpClientConfig = null;
return this;
}
@@ -161,7 +173,8 @@ public void checkPreconditions() {
private OAuthConfig createConfig() {
checkPreconditions();
return new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream, state, responseType,
- userAgent, connectTimeout, readTimeout, asyncHttpClientConfig, asyncHttpProviderClassName);
+ userAgent, connectTimeout, readTimeout, ningAsyncHttpClientConfig, ningAsyncHttpProviderClassName,
+ ahcAsyncHttpClientConfig);
}
/**
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
index 78358d2e3..d5bba4899 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthConfig.java
@@ -1,6 +1,5 @@
package com.github.scribejava.core.model;
-import com.ning.http.client.AsyncHttpClientConfig;
import java.io.IOException;
import java.io.OutputStream;
@@ -23,17 +22,21 @@ public class OAuthConfig {
private final Integer connectTimeout;
private final Integer readTimeout;
- //async only version
- private final AsyncHttpClientConfig asyncHttpClientConfig;
- private final String asyncHttpProviderClassName;
+ //async version only
+ //ning 1.9
+ private com.ning.http.client.AsyncHttpClientConfig ningAsyncHttpClientConfig;
+ private String ningAsyncHttpProviderClassName;
+ //AHC 2.0
+ private org.asynchttpclient.AsyncHttpClientConfig ahcAsyncHttpClientConfig;
public OAuthConfig(String key, String secret) {
- this(key, secret, null, null, null, null, null, null, null, null, null, null, null);
+ this(key, secret, null, null, null, null, null, null, null, null, null, null, null, null);
}
public OAuthConfig(String apiKey, String apiSecret, String callback, SignatureType signatureType, String scope,
OutputStream debugStream, String state, String responseType, String userAgent, Integer connectTimeout,
- Integer readTimeout, AsyncHttpClientConfig asyncHttpClientConfig, String asyncHttpProviderClassName) {
+ Integer readTimeout, com.ning.http.client.AsyncHttpClientConfig ningAsyncHttpClientConfig,
+ String ningAsyncHttpProviderClassName, org.asynchttpclient.AsyncHttpClientConfig ahcAsyncHttpClientConfig) {
this.apiKey = apiKey;
this.apiSecret = apiSecret;
this.callback = callback;
@@ -45,8 +48,9 @@ public OAuthConfig(String apiKey, String apiSecret, String callback, SignatureTy
this.userAgent = userAgent;
this.connectTimeout = connectTimeout;
this.readTimeout = readTimeout;
- this.asyncHttpClientConfig = asyncHttpClientConfig;
- this.asyncHttpProviderClassName = asyncHttpProviderClassName;
+ this.ningAsyncHttpClientConfig = ningAsyncHttpClientConfig;
+ this.ningAsyncHttpProviderClassName = ningAsyncHttpProviderClassName;
+ this.ahcAsyncHttpClientConfig = ahcAsyncHttpClientConfig;
}
public String getApiKey() {
@@ -100,11 +104,15 @@ public Integer getReadTimeout() {
return readTimeout;
}
- public AsyncHttpClientConfig getAsyncHttpClientConfig() {
- return asyncHttpClientConfig;
+ public com.ning.http.client.AsyncHttpClientConfig getNingAsyncHttpClientConfig() {
+ return ningAsyncHttpClientConfig;
}
- public String getAsyncHttpProviderClassName() {
- return asyncHttpProviderClassName;
+ public String getNingAsyncHttpProviderClassName() {
+ return ningAsyncHttpProviderClassName;
+ }
+
+ public org.asynchttpclient.AsyncHttpClientConfig getAhcAsyncHttpClientConfig() {
+ return ahcAsyncHttpClientConfig;
}
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
index b1d8c8eee..f6922224e 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
@@ -1,7 +1,5 @@
package com.github.scribejava.core.oauth;
-import com.github.scribejava.core.async.ning.OAuthAsyncCompletionHandler;
-import com.ning.http.client.AsyncHttpClient;
import com.github.scribejava.core.exceptions.OAuthException;
import com.github.scribejava.core.model.AbstractRequest;
import static com.github.scribejava.core.model.AbstractRequest.DEFAULT_CONTENT_TYPE;
@@ -12,7 +10,7 @@
import com.github.scribejava.core.model.OAuthRequestAsync;
import com.github.scribejava.core.model.ScribeJavaConfig;
import com.github.scribejava.core.model.Verb;
-import com.ning.http.client.AsyncHttpClientConfig;
+import java.io.IOException;
import java.util.Map;
import java.util.concurrent.Future;
@@ -24,20 +22,24 @@
public abstract class OAuthService {
private final OAuthConfig config;
- private final AsyncHttpClient asyncHttpClient;
+ private final com.ning.http.client.AsyncHttpClient ningAsyncHttpClient;
+ private final org.asynchttpclient.AsyncHttpClient ahcAsyncHttpClient;
public OAuthService(OAuthConfig config) {
this.config = config;
final ForceTypeOfHttpRequest forceTypeOfHttpRequest = ScribeJavaConfig.getForceTypeOfHttpRequests();
- final AsyncHttpClientConfig asyncHttpClientConfig = config.getAsyncHttpClientConfig();
- if (asyncHttpClientConfig == null) {
+ final com.ning.http.client.AsyncHttpClientConfig ningConfig = config.getNingAsyncHttpClientConfig();
+ final org.asynchttpclient.AsyncHttpClientConfig ahcConfig = config.getAhcAsyncHttpClientConfig();
+
+ if (ningConfig == null && ahcConfig == null) {
if (ForceTypeOfHttpRequest.FORCE_ASYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
throw new OAuthException("Cannot use sync operations, only async");
}
if (ForceTypeOfHttpRequest.PREFER_ASYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
config.log("Cannot use sync operations, only async");
}
- asyncHttpClient = null;
+ ningAsyncHttpClient = null;
+ ahcAsyncHttpClient = null;
} else {
if (ForceTypeOfHttpRequest.FORCE_SYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
throw new OAuthException("Cannot use async operations, only sync");
@@ -45,15 +47,26 @@ public OAuthService(OAuthConfig config) {
if (ForceTypeOfHttpRequest.PREFER_SYNC_ONLY_HTTP_REQUESTS == forceTypeOfHttpRequest) {
config.log("Cannot use async operations, only sync");
}
- final String asyncHttpProviderClassName = config.getAsyncHttpProviderClassName();
- asyncHttpClient = asyncHttpProviderClassName == null ? new AsyncHttpClient(asyncHttpClientConfig)
- : new AsyncHttpClient(asyncHttpProviderClassName, asyncHttpClientConfig);
+ if (ahcConfig == null) {
+ final String ningAsyncHttpProviderClassName = config.getNingAsyncHttpProviderClassName();
+ ningAsyncHttpClient = ningAsyncHttpProviderClassName == null
+ ? new com.ning.http.client.AsyncHttpClient(ningConfig)
+ : new com.ning.http.client.AsyncHttpClient(ningAsyncHttpProviderClassName, ningConfig);
+ ahcAsyncHttpClient = null;
+ } else {
+ ahcAsyncHttpClient = new org.asynchttpclient.DefaultAsyncHttpClient(ahcConfig);
+ ningAsyncHttpClient = null;
+ }
}
}
- public void closeAsyncClient() {
- asyncHttpClient.close();
+ public void closeAsyncClient() throws IOException {
+ if (ahcAsyncHttpClient == null) {
+ ningAsyncHttpClient.close();
+ } else {
+ ahcAsyncHttpClient.close();
+ }
}
public OAuthConfig getConfig() {
@@ -70,13 +83,55 @@ public OAuthConfig getConfig() {
public Future executeAsync(Map headers, Verb httpVerb, String completeUrl,
String bodyContents, OAuthAsyncRequestCallback callback,
OAuthRequestAsync.ResponseConverter converter) {
- final AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
+ if (ahcAsyncHttpClient == null) {
+ return ningExecuteAsync(headers, httpVerb, completeUrl, bodyContents, callback, converter);
+ } else {
+ return ahcExecuteAsync(headers, httpVerb, completeUrl, bodyContents, callback, converter);
+ }
+ }
+
+ private Future ningExecuteAsync(Map headers, Verb httpVerb, String completeUrl,
+ String bodyContents, OAuthAsyncRequestCallback callback,
+ OAuthRequestAsync.ResponseConverter converter) {
+ final com.ning.http.client.AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
+ switch (httpVerb) {
+ case GET:
+ boundRequestBuilder = ningAsyncHttpClient.prepareGet(completeUrl);
+ break;
+ case POST:
+ com.ning.http.client.AsyncHttpClient.BoundRequestBuilder requestBuilder
+ = ningAsyncHttpClient.preparePost(completeUrl);
+ if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
+ requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
+ }
+ boundRequestBuilder = requestBuilder.setBody(bodyContents);
+ break;
+ default:
+ throw new IllegalArgumentException("message build error: unknown verb type");
+ }
+
+ for (Map.Entry header : headers.entrySet()) {
+ boundRequestBuilder.addHeader(header.getKey(), header.getValue());
+ }
+ final String userAgent = config.getUserAgent();
+ if (userAgent != null) {
+ boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
+ }
+
+ return boundRequestBuilder
+ .execute(new com.github.scribejava.core.async.ning.OAuthAsyncCompletionHandler<>(callback, converter));
+ }
+
+ private Future ahcExecuteAsync(Map headers, Verb httpVerb, String completeUrl,
+ String bodyContents, OAuthAsyncRequestCallback callback,
+ OAuthRequestAsync.ResponseConverter converter) {
+ final org.asynchttpclient.BoundRequestBuilder boundRequestBuilder;
switch (httpVerb) {
case GET:
- boundRequestBuilder = asyncHttpClient.prepareGet(completeUrl);
+ boundRequestBuilder = ahcAsyncHttpClient.prepareGet(completeUrl);
break;
case POST:
- AsyncHttpClient.BoundRequestBuilder requestBuilder = asyncHttpClient.preparePost(completeUrl);
+ org.asynchttpclient.BoundRequestBuilder requestBuilder = ahcAsyncHttpClient.preparePost(completeUrl);
if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
}
@@ -94,6 +149,7 @@ public Future executeAsync(Map headers, Verb httpVerb, St
boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
}
- return boundRequestBuilder.execute(new OAuthAsyncCompletionHandler<>(callback, converter));
+ return boundRequestBuilder
+ .execute(new com.github.scribejava.core.async.ahc.OAuthAsyncCompletionHandler<>(callback, converter));
}
}
From d5582f28091fd6f3dd7a1ef7f04d6e06e70a8092 Mon Sep 17 00:00:00 2001
From: Arto Toppi
Date: Mon, 30 May 2016 10:20:17 +0800
Subject: [PATCH 068/250] Add Misfit API
Add support for Misfit API.
See https://build.misfit.com for details
---
.../com/github/scribejava/apis/MisfitApi.java | 56 ++++++++++++++++
.../apis/examples/MisfitExample.java | 65 +++++++++++++++++++
2 files changed, 121 insertions(+)
create mode 100644 scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
create mode 100644 scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
new file mode 100644
index 000000000..8ef6d6224
--- /dev/null
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
@@ -0,0 +1,56 @@
+package com.github.scribejava.apis;
+
+import com.github.scribejava.core.builder.api.DefaultApi20;
+import com.github.scribejava.core.model.OAuthConfig;
+import com.github.scribejava.core.model.OAuthConstants;
+import com.github.scribejava.core.model.ParameterList;
+import com.github.scribejava.core.oauth.OAuth20Service;
+import java.util.Map;
+
+public class MisfitApi extends DefaultApi20 {
+
+ protected MisfitApi() {
+ }
+
+ private static class InstanceHolder {
+ private static final MisfitApi INSTANCE = new MisfitApi();
+ }
+
+ public static MisfitApi instance() {
+ return InstanceHolder.INSTANCE;
+ }
+
+ @Override
+ public String getAccessTokenEndpoint() {
+ return "https://api.misfitwearables.com/auth/tokens/exchange";
+ }
+
+ @Override
+ public String getAuthorizationUrl(OAuthConfig config, Map additionalParams) {
+ final ParameterList parameters = new ParameterList(additionalParams);
+ parameters.add(OAuthConstants.RESPONSE_TYPE, "code");
+ parameters.add(OAuthConstants.CLIENT_ID, config.getApiKey());
+
+ final String callback = config.getCallback();
+ if (callback != null) {
+ parameters.add(OAuthConstants.REDIRECT_URI, callback);
+ }
+
+ final String scope = config.getScope();
+ if (scope != null) {
+ parameters.add(OAuthConstants.SCOPE, scope);
+ }
+
+ final String state = config.getState();
+ if (state != null) {
+ parameters.add(OAuthConstants.STATE, state);
+ }
+
+ return parameters.appendTo("https://api.misfitwearables.com/auth/dialog/authorize");
+ }
+
+ @Override
+ protected String getAuthorizationBaseUrl() {
+ throw new UnsupportedOperationException("use getAuthorizationUrl instead");
+ }
+}
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
new file mode 100644
index 000000000..15feb6aee
--- /dev/null
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
@@ -0,0 +1,65 @@
+package com.github.scribejava.apis.examples;
+
+import com.github.scribejava.apis.MisfitApi;
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.model.OAuthRequest;
+import com.github.scribejava.core.model.Response;
+import com.github.scribejava.core.model.Verb;
+import com.github.scribejava.core.oauth.OAuth20Service;
+
+import java.util.Scanner;
+
+public abstract class MisfitExample {
+
+ private static final String NETWORK_NAME = "Misfit";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.misfitwearables.com/move/resource/v1/user/me/profile";
+
+ public static void main(String... args) {
+ // Replace these with your own api key and secret
+ final String apiKey = "your client id";
+ final String apiSecret = "your client secret";
+ final OAuth20Service service = new ServiceBuilder()
+ .apiKey(apiKey)
+ .apiSecret(apiSecret)
+ .callback("http://example.com/callback/")
+ .scope("public,birthday,email,tracking,session,sleep")
+ .build(MisfitApi.instance());
+ 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();
+ System.out.println("Got the Authorization URL!");
+ System.out.println("Now go and authorize ScribeJava here:");
+ System.out.println(authorizationUrl);
+ System.out.println("And paste the authorization code here");
+ System.out.print(">>");
+ final String code = 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 OAuth2AccessToken accessToken = service.getAccessToken(code);
+ System.out.println("Got the Access Token!");
+ System.out.println("(if your curious it looks like this: " + accessToken
+ + ", 'rawResponse'='" + accessToken.getRawResponse() + "')");
+ 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);
+ 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 ScribeJava! :)");
+ }
+}
From dd300b14eeca046deabb7eb9b467084600371ed4 Mon Sep 17 00:00:00 2001
From: Arto Toppi
Date: Mon, 30 May 2016 10:56:44 +0800
Subject: [PATCH 069/250] Update indenting on the MisfitExample
Tabs to spaces on two lines
---
.../com/github/scribejava/apis/examples/MisfitExample.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
index 15feb6aee..ef07f8460 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
@@ -22,8 +22,8 @@ public static void main(String... args) {
final OAuth20Service service = new ServiceBuilder()
.apiKey(apiKey)
.apiSecret(apiSecret)
- .callback("http://example.com/callback/")
- .scope("public,birthday,email,tracking,session,sleep")
+ .callback("http://example.com/callback/")
+ .scope("public,birthday,email,tracking,session,sleep")
.build(MisfitApi.instance());
final Scanner in = new Scanner(System.in);
From d014b52252a3c6d44ea64200f72d508a935f6867 Mon Sep 17 00:00:00 2001
From: Arto Toppi
Date: Tue, 31 May 2016 13:41:50 +0800
Subject: [PATCH 070/250] MisfitApi - Implement getAuthorizationBaseUrl
Updates based on the code review:
Removed unnecessary override for getAuthorizationUrl
Implement method getAuthorizationBaseUrl
---
.../com/github/scribejava/apis/MisfitApi.java | 26 +------------------
1 file changed, 1 insertion(+), 25 deletions(-)
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
index 8ef6d6224..b8761373c 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
@@ -25,32 +25,8 @@ public String getAccessTokenEndpoint() {
return "https://api.misfitwearables.com/auth/tokens/exchange";
}
- @Override
- public String getAuthorizationUrl(OAuthConfig config, Map additionalParams) {
- final ParameterList parameters = new ParameterList(additionalParams);
- parameters.add(OAuthConstants.RESPONSE_TYPE, "code");
- parameters.add(OAuthConstants.CLIENT_ID, config.getApiKey());
-
- final String callback = config.getCallback();
- if (callback != null) {
- parameters.add(OAuthConstants.REDIRECT_URI, callback);
- }
-
- final String scope = config.getScope();
- if (scope != null) {
- parameters.add(OAuthConstants.SCOPE, scope);
- }
-
- final String state = config.getState();
- if (state != null) {
- parameters.add(OAuthConstants.STATE, state);
- }
-
- return parameters.appendTo("https://api.misfitwearables.com/auth/dialog/authorize");
- }
-
@Override
protected String getAuthorizationBaseUrl() {
- throw new UnsupportedOperationException("use getAuthorizationUrl instead");
+ return "https://api.misfitwearables.com/auth/dialog/authorize";
}
}
From 3e3e6c746db33e69cdb876a7238d675b24fc8a68 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 6 Jun 2016 15:35:43 +0300
Subject: [PATCH 071/250] add Misfit (http://misfit.com/) API
---
README.md | 1 +
changelog | 1 +
.../main/java/com/github/scribejava/apis/MisfitApi.java | 8 ++------
.../github/scribejava/apis/examples/MisfitExample.java | 5 +++--
4 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 031c4dd53..157d9202c 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,7 @@ You can use ning async http client out-of-box, just use ServiceBuilderAsync
* VK ВКонтакте (http://vk.com/)
* XING (https://www.xing.com/)
* Yahoo (https://www.yahoo.com/)
+* Misfit (http://misfit.com/)
* check the [examples folder](https://github.com/scribejava/scribejava/tree/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples)
### Small and modular
diff --git a/changelog b/changelog
index 2080cb59f..486f5372d 100644
--- a/changelog
+++ b/changelog
@@ -1,6 +1,7 @@
[SNAPSHOT]
* make http async client implementation be more pluggable
* add async-http-client 2.0 support (thanks to Sai Chandrasekharan https://github.com/saichand)
+ * add Misfit (http://misfit.com/) API
[2.6.0]
* simplify async/sync usages
diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
index b8761373c..f6d2fc706 100644
--- a/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
+++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/MisfitApi.java
@@ -1,11 +1,6 @@
package com.github.scribejava.apis;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.model.OAuthConfig;
-import com.github.scribejava.core.model.OAuthConstants;
-import com.github.scribejava.core.model.ParameterList;
-import com.github.scribejava.core.oauth.OAuth20Service;
-import java.util.Map;
public class MisfitApi extends DefaultApi20 {
@@ -13,6 +8,7 @@ protected MisfitApi() {
}
private static class InstanceHolder {
+
private static final MisfitApi INSTANCE = new MisfitApi();
}
@@ -22,7 +18,7 @@ public static MisfitApi instance() {
@Override
public String getAccessTokenEndpoint() {
- return "https://api.misfitwearables.com/auth/tokens/exchange";
+ return "https://api.misfitwearables.com/auth/tokens/exchange";
}
@Override
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
index ef07f8460..edb362fd2 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
@@ -12,8 +12,9 @@
public abstract class MisfitExample {
- private static final String NETWORK_NAME = "Misfit";
- private static final String PROTECTED_RESOURCE_URL = "https://api.misfitwearables.com/move/resource/v1/user/me/profile";
+ private static final String NETWORK_NAME = "Misfit";
+ private static final String PROTECTED_RESOURCE_URL
+ = "https://api.misfitwearables.com/move/resource/v1/user/me/profile";
public static void main(String... args) {
// Replace these with your own api key and secret
From 545f2d55288c31941a01b2b8daef27dad1206b9b Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 6 Jun 2016 15:52:52 +0300
Subject: [PATCH 072/250] implement async version getting Request Token for
OAuth 1.0a
---
changelog | 1 +
.../core/oauth/OAuth10aService.java | 30 +++++++++++++++----
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/changelog b/changelog
index 486f5372d..6c05721b2 100644
--- a/changelog
+++ b/changelog
@@ -2,6 +2,7 @@
* make http async client implementation be more pluggable
* add async-http-client 2.0 support (thanks to Sai Chandrasekharan https://github.com/saichand)
* add Misfit (http://misfit.com/) API
+ * implement async version getting Request Token for OAuth 1.0a
[2.6.0]
* simplify async/sync usages
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
index a93c4c3ec..186541c39 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
@@ -40,15 +40,12 @@ public OAuth10aService(DefaultApi10a api, OAuthConfig config) {
*
* @return request token
*/
- public OAuth1RequestToken getRequestToken() {
+ public final OAuth1RequestToken getRequestToken() {
final OAuthConfig config = getConfig();
config.log("obtaining request token from " + api.getRequestTokenEndpoint());
final OAuthRequest request = new OAuthRequest(api.getRequestTokenVerb(), api.getRequestTokenEndpoint(), this);
- config.log("setting oauth_callback to " + config.getCallback());
- request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback());
- addOAuthParams(request, "");
- appendSignature(request);
+ prepareRequestTokenRequest(request);
config.log("sending request...");
final Response response = request.send();
@@ -59,6 +56,29 @@ public OAuth1RequestToken getRequestToken() {
return api.getRequestTokenExtractor().extract(body);
}
+ public final Future getRequestTokenAsync(
+ OAuthAsyncRequestCallback callback) {
+ final OAuthConfig config = getConfig();
+ config.log("async obtaining request token from " + api.getRequestTokenEndpoint());
+ final OAuthRequestAsync request
+ = new OAuthRequestAsync(api.getRequestTokenVerb(), api.getRequestTokenEndpoint(), this);
+ prepareRequestTokenRequest(request);
+ return request.sendAsync(callback, new OAuthRequestAsync.ResponseConverter() {
+ @Override
+ public OAuth1RequestToken convert(Response response) throws IOException {
+ return getApi().getRequestTokenExtractor().extract(response.getBody());
+ }
+ });
+ }
+
+ protected void prepareRequestTokenRequest(AbstractRequest request) {
+ final OAuthConfig config = getConfig();
+ config.log("setting oauth_callback to " + config.getCallback());
+ request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback());
+ addOAuthParams(request, "");
+ appendSignature(request);
+ }
+
private void addOAuthParams(AbstractRequest request, String tokenSecret) {
final OAuthConfig config = getConfig();
request.addOAuthParameter(OAuthConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds());
From 2a1671c1a8cad2b9a9e9bd463b34dc11bbbddb95 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 6 Jun 2016 15:59:03 +0300
Subject: [PATCH 073/250] prepare 2.7.0 release
---
README.md | 4 ++--
changelog | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 157d9202c..6fac2c8ce 100644
--- a/README.md
+++ b/README.md
@@ -85,7 +85,7 @@ You can pull ScribeJava from the central maven repository, just add these to you
com.github.scribejava
scribejava-apis
- 2.6.0
+ 2.7.0
```
@@ -94,7 +94,7 @@ And in case you need just core classes (that's it, without any external API (FB,
com.github.scribejava
scribejava-core
- 2.6.0
+ 2.7.0
```
diff --git a/changelog b/changelog
index 6c05721b2..cc207737e 100644
--- a/changelog
+++ b/changelog
@@ -1,4 +1,4 @@
-[SNAPSHOT]
+[2.7.0]
* make http async client implementation be more pluggable
* add async-http-client 2.0 support (thanks to Sai Chandrasekharan https://github.com/saichand)
* add Misfit (http://misfit.com/) API
From 9ab3986f1b101659f4e5a83b48a657f0711af1aa Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 6 Jun 2016 17:53:39 +0300
Subject: [PATCH 074/250] [maven-release-plugin] prepare release
scribejava-2.7.0
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index e72fe52e7..8a4640ce0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.6.1-SNAPSHOT
+ 2.7.0
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 6a8f03dfc..08295e37b 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.6.1-SNAPSHOT
+ 2.7.0
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index b4a2894c9..c2230b028 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.6.1-SNAPSHOT
+ 2.7.0
../pom.xml
From 832ebd3e351edc3b07e55f3a347e3018b18448f7 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Mon, 6 Jun 2016 17:53:44 +0300
Subject: [PATCH 075/250] [maven-release-plugin] prepare for next development
iteration
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 8a4640ce0..e4aa054f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.7.0
+ 2.7.1-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 08295e37b..c2de94306 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.7.0
+ 2.7.1-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index c2230b028..c6b9b52ca 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.7.0
+ 2.7.1-SNAPSHOT
../pom.xml
From 1f6d1da303c502061269b8b29a463818830a594e Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 8 Jun 2016 15:40:30 +0300
Subject: [PATCH 076/250] do not hide checked IOException in unchecked
IllegalArgumentException
---
changelog | 3 ++
.../apis/examples/AWeberExample.java | 3 +-
.../scribejava/apis/examples/DiggExample.java | 3 +-
.../apis/examples/FacebookExample.java | 3 +-
.../apis/examples/FlickrExample.java | 3 +-
.../apis/examples/Foursquare2Example.java | 3 +-
.../apis/examples/FoursquareExample.java | 3 +-
.../apis/examples/FreelancerExample.java | 3 +-
.../apis/examples/GeniusExample.java | 3 +-
.../apis/examples/GitHubExample.java | 3 +-
.../apis/examples/Google20Example.java | 3 +-
.../scribejava/apis/examples/HHExample.java | 3 +-
.../apis/examples/ImgurExample.java | 3 +-
.../apis/examples/Kaixin20Example.java | 3 +-
.../apis/examples/LinkedIn20Example.java | 3 +-
.../apis/examples/LinkedInExample.java | 3 +-
.../examples/LinkedInExampleWithScopes.java | 3 +-
.../scribejava/apis/examples/LiveExample.java | 3 +-
.../apis/examples/MailruExample.java | 3 +-
.../apis/examples/MeetupExample.java | 3 +-
.../apis/examples/MisfitExample.java | 3 +-
.../apis/examples/NeteaseWeiboExample.java | 3 +-
.../apis/examples/OdnoklassnikiExample.java | 3 +-
.../apis/examples/PinterestExample.java | 3 +-
.../apis/examples/Px500Example.java | 3 +-
.../apis/examples/RenrenExample.java | 3 +-
.../apis/examples/SinaWeibo2Example.java | 3 +-
.../apis/examples/SinaWeiboExample.java | 3 +-
.../apis/examples/SkyrockExample.java | 3 +-
.../apis/examples/SohuWeiboExample.java | 3 +-
.../apis/examples/StackExchangeExample.java | 3 +-
.../apis/examples/TrelloExample.java | 3 +-
.../apis/examples/TumblrExample.java | 3 +-
.../apis/examples/TutByExample.java | 3 +-
.../apis/examples/TwitterExample.java | 3 +-
.../apis/examples/ViadeoExample.java | 3 +-
.../apis/examples/VkontakteExample.java | 3 +-
.../scribejava/apis/examples/XingExample.java | 3 +-
.../apis/examples/YahooExample.java | 3 +-
.../scribejava/core/model/Response.java | 9 +----
.../core/oauth/OAuth10aService.java | 10 ++---
.../scribejava/core/oauth/OAuth20Service.java | 15 ++-----
.../scribejava/core/utils/StreamUtils.java | 40 ++++++++-----------
.../scribejava/core/model/ResponseTest.java | 4 +-
.../core/oauth/OAuth20ServiceTest.java | 3 +-
.../core/utils/StreamUtilsTest.java | 8 ++--
46 files changed, 113 insertions(+), 93 deletions(-)
diff --git a/changelog b/changelog
index cc207737e..cbf92b6da 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+[SNAPSHOT]
+ * do not hide checked IOException in unchecked IllegalArgumentException
+
[2.7.0]
* make http async client implementation be more pluggable
* add async-http-client 2.0 support (thanks to Sai Chandrasekharan https://github.com/saichand)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java
index 233d3a984..b17637c13 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/AWeberExample.java
@@ -9,6 +9,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class AWeberExample {
@@ -18,7 +19,7 @@ public abstract class AWeberExample {
private static final String CONSUMER_KEY = "";
private static final String CONSUMER_SECRET = "";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey(CONSUMER_KEY)
.apiSecret(CONSUMER_SECRET)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java
index 690f95081..f55c105a0 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/DiggExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract 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) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "myKey";
final String apiSecret = "mySecret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
index 463729c17..7a1772aec 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FacebookExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class FacebookExample {
private static final String NETWORK_NAME = "Facebook";
private static final String PROTECTED_RESOURCE_URL = "https://graph.facebook.com/v2.6/me";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java
index db08042ca..ed03b906d 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FlickrExample.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class FlickrExample {
private static final String PROTECTED_RESOURCE_URL = "http://api.flickr.com/services/rest/";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your_app_id";
final String apiSecret = "your_api_secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java
index c581aa484..c9b317911 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Foursquare2Example.java
@@ -8,13 +8,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class Foursquare2Example {
private static final String PROTECTED_RESOURCE_URL
= "https://api.foursquare.com/v2/users/self/friends?oauth_token=";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your client id";
final String apiSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java
index 90fa38848..639aaec0a 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FoursquareExample.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class FoursquareExample {
private static final String PROTECTED_RESOURCE_URL = "http://api.foursquare.com/v1/user";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your client id")
.apiSecret("your client secret")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java
index c72f72de0..54e0a7d8d 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/FreelancerExample.java
@@ -10,6 +10,7 @@
import com.github.scribejava.core.model.SignatureType;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class FreelancerExample {
@@ -19,7 +20,7 @@ public abstract class FreelancerExample {
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) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.signatureType(SignatureType.QueryString)
.apiKey("your client id")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java
index 141cc7ebf..0db6ddc05 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GeniusExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class GeniusExample {
private static final String NETWORK_NAME = "Genius";
private static final String PROTECTED_RESOURCE_URL = "https://api.genius.com/songs/378195";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java
index fb12bf8f7..0a07c9709 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/GitHubExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class GitHubExample {
private static final String NETWORK_NAME = "GitHub";
private static final String PROTECTED_RESOURCE_URL = "https://api.github.com/user";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
index 50ec20a62..2e6800c19 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Google20Example.java
@@ -9,6 +9,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -17,7 +18,7 @@ public abstract class Google20Example {
private static final String NETWORK_NAME = "G+";
private static final String PROTECTED_RESOURCE_URL = "https://www.googleapis.com/plus/v1/people/me";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
index 0ca8052e0..add150d1f 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/HHExample.java
@@ -10,13 +10,14 @@
import com.github.scribejava.apis.HHApi;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class HHExample {
private static final String NETWORK_NAME = "hh.ru";
private static final String PROTECTED_RESOURCE_URL = "https://api.hh.ru/me";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java
index d25acaa86..1d3f24a44 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ImgurExample.java
@@ -7,6 +7,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
import java.util.Scanner;
@@ -15,7 +16,7 @@ public abstract class ImgurExample {
private static final String NETWORK_NAME = "Imgur";
private static final String PROTECTED_RESOURCE_URL = "https://api.imgur.com/3/account/me";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your client id";
final String apiSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java
index 0034f979a..4551370d6 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Kaixin20Example.java
@@ -8,13 +8,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class Kaixin20Example {
private static final String NETWORK_NAME = "Kaixin";
private static final String PROTECTED_RESOURCE_URL = "https://api.kaixin001.com/users/me.json";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your api key";
final String apiSecret = "your api secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java
index d308b7c5c..a39c79890 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java
@@ -8,13 +8,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class LinkedIn20Example {
private static final String NETWORK_NAME = "LinkedIn";
private static final String PROTECTED_RESOURCE_URL = "https://api.linkedin.com/v1/people/~:(%s)";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java
index 6a8e327ec..81324377b 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract 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) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your client id")
.apiSecret("your client secret")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java
index a0a925cb5..2e951fa5f 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedInExampleWithScopes.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract 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) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client id";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java
index c86eaa793..0540a26db 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LiveExample.java
@@ -8,13 +8,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class LiveExample {
private static final String PROTECTED_RESOURCE_URL
= "https://api.foursquare.com/v2/users/self/friends?oauth_token=";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "";
final String apiSecret = "";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java
index 45cdb9a80..ae4ad4856 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MailruExample.java
@@ -8,6 +8,7 @@
import com.github.scribejava.apis.MailruApi;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class MailruExample {
@@ -15,7 +16,7 @@ public abstract class MailruExample {
private static final String PROTECTED_RESOURCE_URL
= "http://www.appsmail.ru/platform/api?method=users.getInfo&secure=1";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java
index 8adf45a52..64180b980 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MeetupExample.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class MeetupExample {
private static final String PROTECTED_RESOURCE_URL = "http://api.meetup.com/2/member/self";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your client id")
.apiSecret("your client secret")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
index edb362fd2..66e5901c9 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/MisfitExample.java
@@ -7,6 +7,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
import java.util.Scanner;
@@ -16,7 +17,7 @@ public abstract class MisfitExample {
private static final String PROTECTED_RESOURCE_URL
= "https://api.misfitwearables.com/move/resource/v1/user/me/profile";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your client id";
final String apiSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java
index 31a210612..08f782b13 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/NeteaseWeiboExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract 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) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your key";
final String apiSecret = "your secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
index 1900e3f47..9996484a4 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/OdnoklassnikiExample.java
@@ -8,6 +8,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class OdnoklassnikiExample {
@@ -15,7 +16,7 @@ public abstract class OdnoklassnikiExample {
private static final String PROTECTED_RESOURCE_URL
= "https://api.ok.ru/api/users/getCurrentUser?application_key=%1$s&format=JSON";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your api client id";
final String publicKey = "your api public key";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java
index 13f7d77b4..ca0359611 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/PinterestExample.java
@@ -7,6 +7,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
import java.util.Scanner;
@@ -14,7 +15,7 @@ public abstract class PinterestExample {
private static final String PROTECTED_RESOURCE_URL = "https://api.pinterest.com/v1/me/?access_token?access_token=";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your_app_id";
final String apiSecret = "your_app_secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java
index 458aea185..4fbda56ff 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class Px500Example {
private static final String PROTECTED_RESOURCE_URL = "https://api.500px.com/v1/";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your-api-key")
.apiSecret("your-api-secret")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java
index 75f132a4b..42f99eb6d 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java
@@ -17,13 +17,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class RenrenExample {
private static final String NETWORK_NAME = "Renren";
private static final String PROTECTED_RESOURCE_URL = "http://api.renren.com/restserver.do";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your api key";
final String apiSecret = "your api secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java
index 1a67ad8ed..815f19ba2 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java
@@ -8,13 +8,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract 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";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your_api_key";
final String apiSecret = "your_api_secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java
index 1d8625059..8c3fccbd7 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract 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) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your key";
final String apiSecret = "your secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java
index 121a3da0f..440058d57 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class SkyrockExample {
private static final String PROTECTED_RESOURCE_URL = "https://api.skyrock.com/v2/user/get.json";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your-api-key")
.apiSecret("your-api-secret")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java
index c554208ab..d91829387 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SohuWeiboExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract 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) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your_key";
final String apiSecret = "your_secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java
index affa6a812..d7d2341a2 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/StackExchangeExample.java
@@ -10,13 +10,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class StackExchangeExample {
private static final String NETWORK_NAME = "Stack Exchange";
private static final String PROTECTED_RESOURCE_URL = "https://api.stackexchange.com/2.2/me";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id, secret, application key and
// optionally site name
final String clientId = "your client id";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java
index bc3147b34..a72821cb2 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TrelloExample.java
@@ -9,6 +9,7 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class TrelloExample {
@@ -16,7 +17,7 @@ public abstract class TrelloExample {
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) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey(API_KEY)
.apiSecret(API_SECRET)
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java
index 881cebd6d..10ae13e71 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TumblrExample.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class TumblrExample {
private static final String PROTECTED_RESOURCE_URL = "http://api.tumblr.com/v2/user/info";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("MY_CONSUMER_KEY")
.apiSecret("MY_CONSUMER_SECRET")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
index e8d82d98b..769270d37 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TutByExample.java
@@ -10,13 +10,14 @@
import com.github.scribejava.apis.TutByApi;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class TutByExample {
private static final String NETWORK_NAME = "Tut.by";
private static final String PROTECTED_RESOURCE_URL = "http://profile.tut.by/getInfo";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java
index 4a46982aa..66d8cefae 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/TwitterExample.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class TwitterExample {
private static final String PROTECTED_RESOURCE_URL = "https://api.twitter.com/1.1/account/verify_credentials.json";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your client id")
.apiSecret("your client secret")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java
index 3d8d12904..1a9887217 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ViadeoExample.java
@@ -8,13 +8,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class ViadeoExample {
private static final String NETWORK_NAME = "Viadeo";
private static final String PROTECTED_RESOURCE_URL = "https://api.viadeo.com/me?user_detail=full";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your own api key and secret
final String apiKey = "your_app_id";
final String apiSecret = "your_api_secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java
index f026fbbc0..5e50158bd 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/VkontakteExample.java
@@ -8,13 +8,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import java.io.IOException;
public abstract class VkontakteExample {
private static final String NETWORK_NAME = "Vkontakte.ru";
private static final String PROTECTED_RESOURCE_URL = "https://api.vk.com/method/users.get";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
// Replace these with your client id and secret
final String clientId = "your client id";
final String clientSecret = "your client secret";
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java
index 50ab3c6ba..04a3668fd 100755
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java
@@ -9,12 +9,13 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract class XingExample {
private static final String PROTECTED_RESOURCE_URL = "https://api.xing.com/v1/users/me";
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your client id")
.apiSecret("your client secret")
diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java
index ee93da83a..3d020d59d 100644
--- a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java
+++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java
@@ -9,13 +9,14 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;
+import java.io.IOException;
public abstract 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) {
+ public static void main(String... args) throws IOException {
final OAuth10aService service = new ServiceBuilder()
.apiKey("your client id")
.apiSecret("your client secret")
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/model/Response.java b/scribejava-core/src/main/java/com/github/scribejava/core/model/Response.java
index bce6e584a..869066788 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/model/Response.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/model/Response.java
@@ -37,7 +37,7 @@ public Response(int code, String message, Map headers, String bo
}
}
- private String parseBodyContents() {
+ private String parseBodyContents() throws IOException {
if ("gzip".equals(getHeader("Content-Encoding"))) {
body = StreamUtils.getGzipStreamContents(getStream());
} else {
@@ -58,12 +58,7 @@ public final boolean isSuccessful() {
return getCode() >= 200 && getCode() < 400;
}
- /**
- * Obtains the HTTP Response body
- *
- * @return response body
- */
- public String getBody() {
+ public String getBody() throws IOException {
return body == null ? parseBodyContents() : body;
}
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
index 186541c39..e707486bc 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth10aService.java
@@ -35,12 +35,7 @@ public OAuth10aService(DefaultApi10a api, OAuthConfig config) {
this.api = api;
}
- /**
- * Retrieve the request token.
- *
- * @return request token
- */
- public final OAuth1RequestToken getRequestToken() {
+ public final OAuth1RequestToken getRequestToken() throws IOException {
final OAuthConfig config = getConfig();
config.log("obtaining request token from " + api.getRequestTokenEndpoint());
final OAuthRequest request = new OAuthRequest(api.getRequestTokenVerb(), api.getRequestTokenEndpoint(), this);
@@ -95,7 +90,8 @@ private void addOAuthParams(AbstractRequest request, String tokenSecret) {
config.log("appended additional OAuth parameters: " + MapUtils.toString(request.getOauthParameters()));
}
- public final OAuth1AccessToken getAccessToken(OAuth1RequestToken requestToken, String oauthVerifier) {
+ public final OAuth1AccessToken getAccessToken(OAuth1RequestToken requestToken, String oauthVerifier)
+ throws IOException {
final OAuthConfig config = getConfig();
config.log("obtaining access token from " + api.getAccessTokenEndpoint());
final OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this);
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
index b9efbf0f3..43bf4c7fa 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java
@@ -33,7 +33,7 @@ public OAuth20Service(DefaultApi20 api, OAuthConfig config) {
}
//sync version, protected to facilitate mocking
- protected OAuth2AccessToken sendAccessTokenRequestSync(OAuthRequest request) {
+ protected OAuth2AccessToken sendAccessTokenRequestSync(OAuthRequest request) throws IOException {
return api.getAccessTokenExtractor().extract(request.send().getBody());
}
@@ -49,7 +49,7 @@ public OAuth2AccessToken convert(Response response) throws IOException {
});
}
- public final OAuth2AccessToken getAccessToken(String code) {
+ public final OAuth2AccessToken getAccessToken(String code) throws IOException {
final OAuthRequest request = createAccessTokenRequest(code,
new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
@@ -86,7 +86,7 @@ protected T createAccessTokenRequest(String code, T
return request;
}
- public final OAuth2AccessToken refreshAccessToken(String refreshToken) {
+ public final OAuth2AccessToken refreshAccessToken(String refreshToken) throws IOException {
final OAuthRequest request = createRefreshTokenRequest(refreshToken,
new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
@@ -113,14 +113,7 @@ protected T createRefreshTokenRequest(String refresh
return request;
}
- /**
- * Request Access Token Password Grant sync version
- *
- * @param uname User name
- * @param password User password
- * @return OAuth2AccessToken
- */
- public final OAuth2AccessToken getAccessTokenPasswordGrant(String uname, String password) {
+ public final OAuth2AccessToken getAccessTokenPasswordGrant(String uname, String password) throws IOException {
final OAuthRequest request = createAccessTokenPasswordGrantRequest(uname, password,
new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint(), this));
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/utils/StreamUtils.java b/scribejava-core/src/main/java/com/github/scribejava/core/utils/StreamUtils.java
index 93d089489..65cea62ee 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/utils/StreamUtils.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/utils/StreamUtils.java
@@ -16,25 +16,22 @@ public abstract class StreamUtils {
*
* @param is input stream
* @return string contents
+ * @throws java.io.IOException
*/
- public static String getStreamContents(InputStream is) {
+ public static String getStreamContents(InputStream is) throws IOException {
Preconditions.checkNotNull(is, "Cannot get String from a null object");
- try {
- final char[] buffer = new char[0x10000];
- final StringBuilder out = new StringBuilder();
- try (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);
- }
- return out.toString();
- } catch (IOException ioe) {
- throw new IllegalStateException("Error while reading response body", ioe);
+ final char[] buffer = new char[0x10000];
+ final StringBuilder out = new StringBuilder();
+ try (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);
}
+ return out.toString();
}
/**
@@ -42,14 +39,11 @@ public static String getStreamContents(InputStream is) {
*
* @param is input stream
* @return string contents
+ * @throws java.io.IOException
*/
- public static String getGzipStreamContents(InputStream is) {
+ public static String getGzipStreamContents(InputStream is) throws IOException {
Preconditions.checkNotNull(is, "Cannot get String from a null object");
- try {
- final GZIPInputStream gis = new GZIPInputStream(is);
- return getStreamContents(gis);
- } catch (IOException ioe) {
- throw new IllegalStateException("Error while reading response body", ioe);
- }
+ final GZIPInputStream gis = new GZIPInputStream(is);
+ return getStreamContents(gis);
}
}
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/model/ResponseTest.java b/scribejava-core/src/test/java/com/github/scribejava/core/model/ResponseTest.java
index c4fe5712f..1f7b0a4fe 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/model/ResponseTest.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/model/ResponseTest.java
@@ -28,13 +28,13 @@ public void shouldPopulateResponseHeaders() {
}
@Test
- public void shouldParseBodyContents() {
+ public void shouldParseBodyContents() throws IOException {
assertEquals("contents", response.getBody());
assertEquals(1, connection.getTimesCalledInpuStream());
}
@Test
- public void shouldParseBodyContentsOnlyOnce() {
+ public void shouldParseBodyContentsOnlyOnce() throws IOException {
assertEquals("contents", response.getBody());
assertEquals("contents", response.getBody());
assertEquals("contents", response.getBody());
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
index 17c58087f..050b0ae4d 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/oauth/OAuth20ServiceTest.java
@@ -7,6 +7,7 @@
import com.github.scribejava.core.services.Base64Encoder;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
+import java.io.IOException;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
@@ -18,7 +19,7 @@
public class OAuth20ServiceTest {
@Test
- public void shouldProduceCorrectRequestSync() {
+ public void shouldProduceCorrectRequestSync() throws IOException {
final OAuth20Service service = new ServiceBuilder()
.apiKey("your_api_key")
.apiSecret("your_api_secret")
diff --git a/scribejava-core/src/test/java/com/github/scribejava/core/utils/StreamUtilsTest.java b/scribejava-core/src/test/java/com/github/scribejava/core/utils/StreamUtilsTest.java
index 322283d23..cb5c6c7c9 100644
--- a/scribejava-core/src/test/java/com/github/scribejava/core/utils/StreamUtilsTest.java
+++ b/scribejava-core/src/test/java/com/github/scribejava/core/utils/StreamUtilsTest.java
@@ -20,7 +20,7 @@ public int read() throws IOException {
}
@Test
- public void shouldCorrectlyDecodeAStream() {
+ public void shouldCorrectlyDecodeAStream() throws IOException {
final String value = "expected";
final InputStream is = new ByteArrayInputStream(value.getBytes());
final String decoded = StreamUtils.getStreamContents(is);
@@ -28,13 +28,13 @@ public void shouldCorrectlyDecodeAStream() {
}
@Test(expected = IllegalArgumentException.class)
- public void shouldFailForNullParameter() {
+ public void shouldFailForNullParameter() throws IOException {
StreamUtils.getStreamContents(null);
fail("Must throw exception before getting here");
}
- @Test(expected = IllegalStateException.class)
- public void shouldFailWithBrokenStream() {
+ @Test(expected = IOException.class)
+ public void shouldFailWithBrokenStream() throws IOException {
// This object simulates problems with input stream.
StreamUtils.getStreamContents(ALLWAYS_ERROR_INPUT_STREAM);
fail("Must throw exception before getting here");
From 36dc0f663558541102011908e8b878bed1582d6d Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 8 Jun 2016 15:47:00 +0300
Subject: [PATCH 077/250] update some dependencies
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index e4aa054f5..1b3bde7d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,7 +102,7 @@
org.asynchttpclient
async-http-client
- 2.0.3
+ 2.0.4
provided
@@ -211,7 +211,7 @@
com.puppycrawl.tools
checkstyle
- 6.18
+ 6.19
From 86d59c209e8fddd006e4a75a99e81e822e2d44b2 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 8 Jun 2016 15:53:54 +0300
Subject: [PATCH 078/250] prepare 2.7.1 release
---
README.md | 4 ++--
changelog | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 6fac2c8ce..a75bb1a9b 100644
--- a/README.md
+++ b/README.md
@@ -85,7 +85,7 @@ You can pull ScribeJava from the central maven repository, just add these to you
com.github.scribejava
scribejava-apis
- 2.7.0
+ 2.7.1
```
@@ -94,7 +94,7 @@ And in case you need just core classes (that's it, without any external API (FB,
com.github.scribejava
scribejava-core
- 2.7.0
+ 2.7.1
```
diff --git a/changelog b/changelog
index cbf92b6da..70d1a8b87 100644
--- a/changelog
+++ b/changelog
@@ -1,4 +1,4 @@
-[SNAPSHOT]
+[2.7.1]
* do not hide checked IOException in unchecked IllegalArgumentException
[2.7.0]
From de5fef31ec803abc4684b2e91554c774d44fe976 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 8 Jun 2016 15:54:50 +0300
Subject: [PATCH 079/250] [maven-release-plugin] prepare release
scribejava-2.7.1
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 1b3bde7d0..dc799268f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.7.1-SNAPSHOT
+ 2.7.1
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index c2de94306..370dea0a8 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.7.1-SNAPSHOT
+ 2.7.1
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index c6b9b52ca..03d7552e8 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.7.1-SNAPSHOT
+ 2.7.1
../pom.xml
From 42deb8da74e8ae321be4c070cac1c823e7edff0c Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 8 Jun 2016 15:54:55 +0300
Subject: [PATCH 080/250] [maven-release-plugin] prepare for next development
iteration
---
pom.xml | 2 +-
scribejava-apis/pom.xml | 2 +-
scribejava-core/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index dc799268f..465f2c181 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.github.scribejava
scribejava
pom
- 2.7.1
+ 2.7.2-SNAPSHOT
ScribeJava OAuth Library
The best OAuth library out there
https://github.com/scribejava/scribejava
diff --git a/scribejava-apis/pom.xml b/scribejava-apis/pom.xml
index 370dea0a8..81a290229 100644
--- a/scribejava-apis/pom.xml
+++ b/scribejava-apis/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.7.1
+ 2.7.2-SNAPSHOT
../pom.xml
diff --git a/scribejava-core/pom.xml b/scribejava-core/pom.xml
index 03d7552e8..ba553129a 100644
--- a/scribejava-core/pom.xml
+++ b/scribejava-core/pom.xml
@@ -5,7 +5,7 @@
com.github.scribejava
scribejava
- 2.7.1
+ 2.7.2-SNAPSHOT
../pom.xml
From d34c3b0d457f9d8278cd4b7c26a3c7f35ef655e3 Mon Sep 17 00:00:00 2001
From: Stas Gromov
Date: Wed, 8 Jun 2016 19:42:04 +0300
Subject: [PATCH 081/250] ScribeJava shouldn't require any async http client
provider to be on the classpath (neither ning neither AHC)
---
changelog | 3 +
.../scribejava/core/oauth/OAuthService.java | 138 ++++++++++--------
.../scribejava/core/utils/StreamUtils.java | 4 +-
3 files changed, 83 insertions(+), 62 deletions(-)
diff --git a/changelog b/changelog
index 70d1a8b87..0140e0565 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+[SNAPSHOT]
+ * FIX: ScribeJava shouldn't require any async http client provider to be on the classpath (neither ning neither AHC)
+
[2.7.1]
* do not hide checked IOException in unchecked IllegalArgumentException
diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
index f6922224e..47b40b497 100644
--- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
+++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuthService.java
@@ -49,13 +49,10 @@ public OAuthService(OAuthConfig config) {
}
if (ahcConfig == null) {
- final String ningAsyncHttpProviderClassName = config.getNingAsyncHttpProviderClassName();
- ningAsyncHttpClient = ningAsyncHttpProviderClassName == null
- ? new com.ning.http.client.AsyncHttpClient(ningConfig)
- : new com.ning.http.client.AsyncHttpClient(ningAsyncHttpProviderClassName, ningConfig);
+ ningAsyncHttpClient = NingProvider.createClient(config.getNingAsyncHttpProviderClassName(), ningConfig);
ahcAsyncHttpClient = null;
} else {
- ahcAsyncHttpClient = new org.asynchttpclient.DefaultAsyncHttpClient(ahcConfig);
+ ahcAsyncHttpClient = AHCProvider.createClient(ahcConfig);
ningAsyncHttpClient = null;
}
}
@@ -84,72 +81,93 @@ public Future executeAsync(Map headers, Verb httpVerb, St
String bodyContents, OAuthAsyncRequestCallback callback,
OAuthRequestAsync.ResponseConverter converter) {
if (ahcAsyncHttpClient == null) {
- return ningExecuteAsync(headers, httpVerb, completeUrl, bodyContents, callback, converter);
+ return NingProvider.ningExecuteAsync(ningAsyncHttpClient, config.getUserAgent(), headers, httpVerb,
+ completeUrl, bodyContents, callback, converter);
} else {
- return ahcExecuteAsync(headers, httpVerb, completeUrl, bodyContents, callback, converter);
+ return AHCProvider.ahcExecuteAsync(ahcAsyncHttpClient, config.getUserAgent(), headers, httpVerb,
+ completeUrl, bodyContents, callback, converter);
}
}
- private Future ningExecuteAsync(Map headers, Verb httpVerb, String completeUrl,
- String bodyContents, OAuthAsyncRequestCallback callback,
- OAuthRequestAsync.ResponseConverter converter) {
- final com.ning.http.client.AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
- switch (httpVerb) {
- case GET:
- boundRequestBuilder = ningAsyncHttpClient.prepareGet(completeUrl);
- break;
- case POST:
- com.ning.http.client.AsyncHttpClient.BoundRequestBuilder requestBuilder
- = ningAsyncHttpClient.preparePost(completeUrl);
- if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
- requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
- }
- boundRequestBuilder = requestBuilder.setBody(bodyContents);
- break;
- default:
- throw new IllegalArgumentException("message build error: unknown verb type");
- }
+ private static class NingProvider {
- for (Map.Entry header : headers.entrySet()) {
- boundRequestBuilder.addHeader(header.getKey(), header.getValue());
- }
- final String userAgent = config.getUserAgent();
- if (userAgent != null) {
- boundRequestBuilder.setHeader(OAuthConstants.USER_AGENT_HEADER_NAME, userAgent);
+ private static com.ning.http.client.AsyncHttpClient createClient(String ningAsyncHttpProviderClassName,
+ com.ning.http.client.AsyncHttpClientConfig ningConfig) {
+ return ningAsyncHttpProviderClassName == null
+ ? new com.ning.http.client.AsyncHttpClient(ningConfig)
+ : new com.ning.http.client.AsyncHttpClient(ningAsyncHttpProviderClassName, ningConfig);
}
- return boundRequestBuilder
- .execute(new com.github.scribejava.core.async.ning.OAuthAsyncCompletionHandler<>(callback, converter));
- }
+ private static Future ningExecuteAsync(com.ning.http.client.AsyncHttpClient ningAsyncHttpClient,
+ String userAgent, Map headers, Verb httpVerb, String completeUrl, String bodyContents,
+ OAuthAsyncRequestCallback callback, OAuthRequestAsync.ResponseConverter converter) {
+ final com.ning.http.client.AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
+ switch (httpVerb) {
+ case GET:
+ boundRequestBuilder = ningAsyncHttpClient.prepareGet(completeUrl);
+ break;
+ case POST:
+ com.ning.http.client.AsyncHttpClient.BoundRequestBuilder requestBuilder
+ = ningAsyncHttpClient.preparePost(completeUrl);
+ if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
+ requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
+ }
+ boundRequestBuilder = requestBuilder.setBody(bodyContents);
+ break;
+ default:
+ throw new IllegalArgumentException("message build error: unknown verb type");
+ }
- private Future ahcExecuteAsync(Map headers, Verb httpVerb, String completeUrl,
- String bodyContents, OAuthAsyncRequestCallback callback,
- OAuthRequestAsync.ResponseConverter converter) {
- final org.asynchttpclient.BoundRequestBuilder boundRequestBuilder;
- switch (httpVerb) {
- case GET:
- boundRequestBuilder = ahcAsyncHttpClient.prepareGet(completeUrl);
- break;
- case POST:
- org.asynchttpclient.BoundRequestBuilder requestBuilder = ahcAsyncHttpClient.preparePost(completeUrl);
- if (!headers.containsKey(AbstractRequest.CONTENT_TYPE)) {
- requestBuilder = requestBuilder.addHeader(AbstractRequest.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
- }
- boundRequestBuilder = requestBuilder.setBody(bodyContents);
- break;
- default:
- throw new IllegalArgumentException("message build error: unknown verb type");
- }
+ for (Map.Entry