diff --git a/.gitignore b/.gitignore
index a9a50de0e..3268079a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,5 @@ scribe.iml
# Binaries
-target
\ No newline at end of file
+target
+bin
diff --git a/pom.xml b/pom.xml
index 9cd54e371..574f67c9f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,20 +1,14 @@
4.0.0
- org.scribe
+ cc.denglu
scribe
jar
- 1.3.6
+ 1.3.6-mod
Scribe OAuth Library
The best OAuth library out there
http://github.com/fernandezpablo85/scribe-java
-
- org.sonatype.oss
- oss-parent
- 5
-
-
github
@@ -41,26 +35,15 @@
http://github.com/fernandezpablo85/scribe-java.git
-
-
- internal.repo
- Temporary Staging Repository
- file://${project.build.directory}/mvn-repo
-
-
-
junit
junit
- 4.8.1
test
commons-codec
commons-codec
- 1.4
- compile
true
@@ -74,45 +57,27 @@
1.5
-
- com.github.github
- site-maven-plugin
- 0.9
-
- Maven artifacts for ${project.version}
- true
- ${project.build.directory}/mvn-repo
- refs/heads/mvn-repo
- **/*
- scribe-java
- fernandezpablo85
-
-
-
-
- site
-
- deploy
-
-
-
-
- org.codehaus.mojo
- findbugs-maven-plugin
- 2.5.2
-
-
- failing-on-high
- compile
-
- check
-
-
- Low
-
-
-
-
+
+
+ deploymentRepo
+ Local Repository
+ http://192.168.2.209:8081/nexus/content/repositories/releases/
+
+
+
+
+
+ junit
+ junit
+ 4.8.1
+
+
+ commons-codec
+ commons-codec
+ 1.4
+
+
+
diff --git a/src/main/java/org/scribe/builder/ServiceBuilder.java b/src/main/java/org/scribe/builder/ServiceBuilder.java
index 27f3c8f63..e118c6f8c 100644
--- a/src/main/java/org/scribe/builder/ServiceBuilder.java
+++ b/src/main/java/org/scribe/builder/ServiceBuilder.java
@@ -22,6 +22,8 @@ public class ServiceBuilder
private Api api;
private String scope;
private SignatureType signatureType;
+ private String state;
+ private String referenceId;
private OutputStream debugStream;
/**
@@ -141,6 +143,24 @@ public ServiceBuilder signatureType(SignatureType type)
return this;
}
+ /**
+ * @param oauth 2.0 status
+ */
+ public ServiceBuilder state(String state)
+ {
+ this.state = state;
+ return this;
+ }
+
+ /**
+ * 外部referenceId,如application_id
+ */
+ public ServiceBuilder referenceId(String referenceId)
+ {
+ this.referenceId = referenceId;
+ return this;
+ }
+
public ServiceBuilder debugStream(OutputStream stream)
{
Preconditions.checkNotNull(stream, "debug stream can't be null");
@@ -164,6 +184,6 @@ public OAuthService build()
Preconditions.checkNotNull(api, "You must specify a valid api through the provider() method");
Preconditions.checkEmptyString(apiKey, "You must provide an api key");
Preconditions.checkEmptyString(apiSecret, "You must provide an api secret");
- return api.createService(new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, debugStream));
+ return api.createService(new OAuthConfig(apiKey, apiSecret, callback, signatureType, scope, state, referenceId, debugStream));
}
}
diff --git a/src/main/java/org/scribe/builder/api/AWeberApi.java b/src/main/java/org/scribe/builder/api/AWeberApi.java
index 53ae1fc7f..5e25cbb43 100644
--- a/src/main/java/org/scribe/builder/api/AWeberApi.java
+++ b/src/main/java/org/scribe/builder/api/AWeberApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class AWeberApi extends DefaultApi10a
@@ -21,7 +22,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/ConstantContactApi.java b/src/main/java/org/scribe/builder/api/ConstantContactApi.java
index 0588bc40c..ff65ce9dd 100644
--- a/src/main/java/org/scribe/builder/api/ConstantContactApi.java
+++ b/src/main/java/org/scribe/builder/api/ConstantContactApi.java
@@ -13,7 +13,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/DefaultApi10a.java b/src/main/java/org/scribe/builder/api/DefaultApi10a.java
index 7506986b1..ef06629c3 100644
--- a/src/main/java/org/scribe/builder/api/DefaultApi10a.java
+++ b/src/main/java/org/scribe/builder/api/DefaultApi10a.java
@@ -124,7 +124,7 @@ public Verb getRequestTokenVerb()
* @param requestToken the request token you need to authorize
* @return the URL where you should redirect your users
*/
- public abstract String getAuthorizationUrl(Token requestToken);
+ public abstract String getAuthorizationUrl(Token requestToken, OAuthConfig config);
/**
* Returns the {@link OAuthService} for this Api
diff --git a/src/main/java/org/scribe/builder/api/DiggApi.java b/src/main/java/org/scribe/builder/api/DiggApi.java
index b69253eb9..55331cd47 100644
--- a/src/main/java/org/scribe/builder/api/DiggApi.java
+++ b/src/main/java/org/scribe/builder/api/DiggApi.java
@@ -21,7 +21,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/DropBoxApi.java b/src/main/java/org/scribe/builder/api/DropBoxApi.java
index 86f4a71a1..90817fe08 100644
--- a/src/main/java/org/scribe/builder/api/DropBoxApi.java
+++ b/src/main/java/org/scribe/builder/api/DropBoxApi.java
@@ -11,7 +11,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return "https://www.dropbox.com/1/oauth/authorize?oauth_token="+requestToken.getToken();
}
diff --git a/src/main/java/org/scribe/builder/api/EvernoteApi.java b/src/main/java/org/scribe/builder/api/EvernoteApi.java
index 05ee502ff..541d3dff6 100644
--- a/src/main/java/org/scribe/builder/api/EvernoteApi.java
+++ b/src/main/java/org/scribe/builder/api/EvernoteApi.java
@@ -1,55 +1,50 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
-/**
- * OAuth API for Evernote
- *
- * @author Norbert Potocki
- */
public class EvernoteApi extends DefaultApi10a
{
- protected String serviceUrl() {
- return "https://www.evernote.com";
- }
+ private static final String AUTHORIZATION_URL = "https://www.evernote.com/OAuth.action?oauth_token=%s";
@Override
- public String getRequestTokenEndpoint()
+ public String getRequestTokenEndpoint()
{
- return serviceUrl() + "/oauth";
+ return "https://www.evernote.com/oauth";
}
- @Override
- public String getAccessTokenEndpoint()
- {
- return serviceUrl() + "/oauth";
- }
+ @Override
+ public String getAccessTokenEndpoint()
+ {
+ return "https://www.evernote.com/oauth";
+ }
+
+ @Override
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
+ {
+ return String.format(AUTHORIZATION_URL, requestToken.getToken());
+ }
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(serviceUrl() + "/OAuth.action?oauth_token=%s", requestToken.getToken());
- }
+ public static class Sandbox extends EvernoteApi
+ {
+ private static final String SANDBOX_URL = "https://sandbox.evernote.com";
- /**
- * Sandbox endpoint
- */
- public static class Sandbox extends EvernoteApi
- {
- @Override
- protected String serviceUrl() {
- return "https://sandbox.evernote.com";
- }
- }
+ @Override
+ public String getRequestTokenEndpoint()
+ {
+ return SANDBOX_URL + "/oauth";
+ }
- /**
- * Yinxiang Biji endpoint
- */
- public static class Yinxiang extends EvernoteApi
- {
- @Override
- protected String serviceUrl() {
- return "https://app.yinxiang.com";
- }
- }
+ @Override
+ public String getAccessTokenEndpoint()
+ {
+ return SANDBOX_URL + "/oauth";
+ }
+
+ @Override
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
+ {
+ return String.format(SANDBOX_URL + "/OAuth.action?oauth_token=%s", requestToken.getToken());
+ }
+ }
}
diff --git a/src/main/java/org/scribe/builder/api/FlickrApi.java b/src/main/java/org/scribe/builder/api/FlickrApi.java
index a63043610..873f5b88c 100644
--- a/src/main/java/org/scribe/builder/api/FlickrApi.java
+++ b/src/main/java/org/scribe/builder/api/FlickrApi.java
@@ -24,7 +24,7 @@ public String getAccessTokenEndpoint()
* {@inheritDoc}
*/
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return "http://www.flickr.com/services/oauth/authorize?oauth_token=" + requestToken.getToken();
}
diff --git a/src/main/java/org/scribe/builder/api/FoursquareApi.java b/src/main/java/org/scribe/builder/api/FoursquareApi.java
index 060a76b76..4fd2a7f88 100644
--- a/src/main/java/org/scribe/builder/api/FoursquareApi.java
+++ b/src/main/java/org/scribe/builder/api/FoursquareApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class FoursquareApi extends DefaultApi10a
@@ -19,7 +20,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/FreelancerApi.java b/src/main/java/org/scribe/builder/api/FreelancerApi.java
index 482e66fd1..b0a938aab 100644
--- a/src/main/java/org/scribe/builder/api/FreelancerApi.java
+++ b/src/main/java/org/scribe/builder/api/FreelancerApi.java
@@ -31,7 +31,7 @@ public Verb getRequestTokenVerb()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
@@ -53,7 +53,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(SANDBOX_AUTHORIZATION_URL + "?oauth_token=%s", requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/GetGlueApi.java b/src/main/java/org/scribe/builder/api/GetGlueApi.java
index 3a7560f0f..1dfa98c16 100644
--- a/src/main/java/org/scribe/builder/api/GetGlueApi.java
+++ b/src/main/java/org/scribe/builder/api/GetGlueApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class GetGlueApi extends DefaultApi10a
@@ -21,7 +22,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/GoogleApi.java b/src/main/java/org/scribe/builder/api/GoogleApi.java
index 9c86e5e1a..dd3493292 100644
--- a/src/main/java/org/scribe/builder/api/GoogleApi.java
+++ b/src/main/java/org/scribe/builder/api/GoogleApi.java
@@ -31,7 +31,7 @@ public Verb getRequestTokenVerb()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/ImgUrApi.java b/src/main/java/org/scribe/builder/api/ImgUrApi.java
index 06dd6910d..8e57ebbff 100644
--- a/src/main/java/org/scribe/builder/api/ImgUrApi.java
+++ b/src/main/java/org/scribe/builder/api/ImgUrApi.java
@@ -24,7 +24,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format("https://api.imgur.com/oauth/authorize?oauth_token=%s", requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/KaixinApi.java b/src/main/java/org/scribe/builder/api/KaixinApi.java
index 5b0e0d5dc..a2965e96d 100644
--- a/src/main/java/org/scribe/builder/api/KaixinApi.java
+++ b/src/main/java/org/scribe/builder/api/KaixinApi.java
@@ -1,40 +1,42 @@
package org.scribe.builder.api;
-import org.scribe.model.*;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.Token;
+import org.scribe.model.Verb;
-public class KaixinApi extends DefaultApi10a
+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";
+ private static final String REQUEST_TOKEN_URL = "http://api.kaixin001.com/oauth/request_token";
+ private static final String ACCESS_TOKEN_URL = "http://api.kaixin001.com/oauth/access_token";
+ private static final String AUTHORIZE_URL = "http://api.kaixin001.com/oauth/authorize?oauth_token=%s";
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
+ @Override
+ public String getRequestTokenEndpoint()
+ {
+ return REQUEST_TOKEN_URL;
+ }
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
+ @Override
+ public String getAccessTokenEndpoint()
+ {
+ return ACCESS_TOKEN_URL;
+ }
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
+ @Override
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
+ {
+ return String.format(AUTHORIZE_URL, requestToken.getToken());
+ }
- @Override
- public Verb getRequestTokenVerb()
- {
- return Verb.GET;
- }
+ @Override
+ public Verb getRequestTokenVerb()
+ {
+ return Verb.GET;
+ }
- @Override
- public Verb getAccessTokenVerb()
- {
- return Verb.GET;
- }
+ @Override
+ public Verb getAccessTokenVerb()
+ {
+ return Verb.GET;
+ }
}
diff --git a/src/main/java/org/scribe/builder/api/LinkedInApi.java b/src/main/java/org/scribe/builder/api/LinkedInApi.java
index ee6becd85..4d02b04e8 100644
--- a/src/main/java/org/scribe/builder/api/LinkedInApi.java
+++ b/src/main/java/org/scribe/builder/api/LinkedInApi.java
@@ -43,7 +43,7 @@ private String scopesAsString()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/LoveFilmApi.java b/src/main/java/org/scribe/builder/api/LoveFilmApi.java
index 81a5bb874..4806f8044 100644
--- a/src/main/java/org/scribe/builder/api/LoveFilmApi.java
+++ b/src/main/java/org/scribe/builder/api/LoveFilmApi.java
@@ -1,6 +1,6 @@
package org.scribe.builder.api;
-import org.scribe.model.Token;
+import org.scribe.model.*;
public class LoveFilmApi extends DefaultApi10a
{
@@ -21,7 +21,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/MeetupApi.java b/src/main/java/org/scribe/builder/api/MeetupApi.java
index 8f63e39e1..a56771015 100644
--- a/src/main/java/org/scribe/builder/api/MeetupApi.java
+++ b/src/main/java/org/scribe/builder/api/MeetupApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
/**
@@ -23,7 +24,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/MendeleyApi.java b/src/main/java/org/scribe/builder/api/MendeleyApi.java
index c6e0eced7..e6ad1bf84 100644
--- a/src/main/java/org/scribe/builder/api/MendeleyApi.java
+++ b/src/main/java/org/scribe/builder/api/MendeleyApi.java
@@ -24,7 +24,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/MisoApi.java b/src/main/java/org/scribe/builder/api/MisoApi.java
index a6d88d3df..8c6784065 100644
--- a/src/main/java/org/scribe/builder/api/MisoApi.java
+++ b/src/main/java/org/scribe/builder/api/MisoApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class MisoApi extends DefaultApi10a
@@ -21,7 +22,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/NetProspexApi.java b/src/main/java/org/scribe/builder/api/NetProspexApi.java
index 8257de751..17037b35d 100644
--- a/src/main/java/org/scribe/builder/api/NetProspexApi.java
+++ b/src/main/java/org/scribe/builder/api/NetProspexApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class NetProspexApi extends DefaultApi10a
@@ -21,7 +22,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/NeteaseWeibooApi.java b/src/main/java/org/scribe/builder/api/NeteaseWeibooApi.java
index fae38ac30..7aad79ef8 100644
--- a/src/main/java/org/scribe/builder/api/NeteaseWeibooApi.java
+++ b/src/main/java/org/scribe/builder/api/NeteaseWeibooApi.java
@@ -1,6 +1,7 @@
package org.scribe.builder.api;
-import org.scribe.model.*;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.Token;
public class NeteaseWeibooApi extends DefaultApi10a
{
@@ -10,7 +11,7 @@ public class NeteaseWeibooApi extends DefaultApi10a
private static final String AUTHENTICATE_URL = "http://api.t.163.com/oauth/authenticate?oauth_token=%s";
@Override
- public String getRequestTokenEndpoint()
+ public String getRequestTokenEndpoint()
{
return REQUEST_TOKEN_URL;
}
@@ -29,14 +30,14 @@ public String getAccessTokenEndpoint()
*
* via http://open.t.163.com/wiki/index.php?title=%E8%AF%B7%E6%B1%82%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83Token(oauth/authorize)
*/
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
/**
* this method is for web client with callback url
- * if you're creating a desktop client please call getAuthorizationUrl
+ * if you're creating a desktop client please call getAuthorizationUrl
*
* via http://open.t.163.com/wiki/index.php?title=%E8%AF%B7%E6%B1%82%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83Token(oauth/authenticate)
*/
diff --git a/src/main/java/org/scribe/builder/api/PlurkApi.java b/src/main/java/org/scribe/builder/api/PlurkApi.java
index 22b1ddb75..8388e2758 100644
--- a/src/main/java/org/scribe/builder/api/PlurkApi.java
+++ b/src/main/java/org/scribe/builder/api/PlurkApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class PlurkApi extends DefaultApi10a
@@ -15,7 +16,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
@@ -31,7 +32,7 @@ public static class Mobile extends PlurkApi
private static final String AUTHORIZATION_URL = "http://www.plurk.com/m/authorize?oauth_token=%s";
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/Px500Api.java b/src/main/java/org/scribe/builder/api/Px500Api.java
index f7f3b0e0a..b3db00b3d 100644
--- a/src/main/java/org/scribe/builder/api/Px500Api.java
+++ b/src/main/java/org/scribe/builder/api/Px500Api.java
@@ -19,7 +19,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/QWeiboApi.java b/src/main/java/org/scribe/builder/api/QWeiboApi.java
index e16f28836..2c8f36cc5 100644
--- a/src/main/java/org/scribe/builder/api/QWeiboApi.java
+++ b/src/main/java/org/scribe/builder/api/QWeiboApi.java
@@ -1,28 +1,29 @@
package org.scribe.builder.api;
-import org.scribe.model.*;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.Token;
-public class QWeiboApi extends DefaultApi10a
+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";
+ private static final String REQUEST_TOKEN_URL = "https://open.t.qq.com/cgi-bin/request_token";
+ private static final String ACCESS_TOKEN_URL = "https://open.t.qq.com/cgi-bin/access_token";
+ private static final String AUTHORIZE_URL = "https://open.t.qq.com/cgi-bin/authorize?oauth_token=%s";
- @Override
- public String getRequestTokenEndpoint()
- {
- return REQUEST_TOKEN_URL;
- }
+ @Override
+ public String getRequestTokenEndpoint()
+ {
+ return REQUEST_TOKEN_URL;
+ }
- @Override
- public String getAccessTokenEndpoint()
- {
- return ACCESS_TOKEN_URL;
- }
+ @Override
+ public String getAccessTokenEndpoint()
+ {
+ return ACCESS_TOKEN_URL;
+ }
- @Override
- public String getAuthorizationUrl(Token requestToken)
- {
- return String.format(AUTHORIZE_URL, requestToken.getToken());
- }
+ @Override
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
+ {
+ return String.format(AUTHORIZE_URL, requestToken.getToken());
+ }
}
diff --git a/src/main/java/org/scribe/builder/api/SapoApi.java b/src/main/java/org/scribe/builder/api/SapoApi.java
index 9771daf4c..2275b3e84 100644
--- a/src/main/java/org/scribe/builder/api/SapoApi.java
+++ b/src/main/java/org/scribe/builder/api/SapoApi.java
@@ -21,7 +21,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/SimpleGeoApi.java b/src/main/java/org/scribe/builder/api/SimpleGeoApi.java
index 3e19df70a..a814ea420 100644
--- a/src/main/java/org/scribe/builder/api/SimpleGeoApi.java
+++ b/src/main/java/org/scribe/builder/api/SimpleGeoApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
/**
@@ -22,7 +23,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return ENDPOINT;
}
diff --git a/src/main/java/org/scribe/builder/api/SinaWeiboApi.java b/src/main/java/org/scribe/builder/api/SinaWeiboApi.java
index 14951d31b..eb3f316d2 100644
--- a/src/main/java/org/scribe/builder/api/SinaWeiboApi.java
+++ b/src/main/java/org/scribe/builder/api/SinaWeiboApi.java
@@ -1,6 +1,7 @@
package org.scribe.builder.api;
-import org.scribe.model.*;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.Token;
public class SinaWeiboApi extends DefaultApi10a
{
@@ -21,7 +22,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/SkyrockApi.java b/src/main/java/org/scribe/builder/api/SkyrockApi.java
index b0e76a303..c23fe39a7 100644
--- a/src/main/java/org/scribe/builder/api/SkyrockApi.java
+++ b/src/main/java/org/scribe/builder/api/SkyrockApi.java
@@ -28,7 +28,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(API_ENDPOINT + AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/SohuWeiboApi.java b/src/main/java/org/scribe/builder/api/SohuWeiboApi.java
index 1f927b7a5..a88a221c4 100644
--- a/src/main/java/org/scribe/builder/api/SohuWeiboApi.java
+++ b/src/main/java/org/scribe/builder/api/SohuWeiboApi.java
@@ -1,6 +1,7 @@
package org.scribe.builder.api;
-import org.scribe.model.*;
+import org.scribe.model.OAuthConfig;
+import org.scribe.model.Token;
public class SohuWeiboApi extends DefaultApi10a
{
@@ -21,7 +22,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/TrelloApi.java b/src/main/java/org/scribe/builder/api/TrelloApi.java
index 9e46730d4..7b1bb561f 100644
--- a/src/main/java/org/scribe/builder/api/TrelloApi.java
+++ b/src/main/java/org/scribe/builder/api/TrelloApi.java
@@ -19,7 +19,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/TumblrApi.java b/src/main/java/org/scribe/builder/api/TumblrApi.java
index ee680ee8a..20c8a0784 100644
--- a/src/main/java/org/scribe/builder/api/TumblrApi.java
+++ b/src/main/java/org/scribe/builder/api/TumblrApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class TumblrApi extends DefaultApi10a
@@ -21,7 +22,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/TwitterApi.java b/src/main/java/org/scribe/builder/api/TwitterApi.java
index 86494c54d..322fe472a 100644
--- a/src/main/java/org/scribe/builder/api/TwitterApi.java
+++ b/src/main/java/org/scribe/builder/api/TwitterApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class TwitterApi extends DefaultApi10a
@@ -11,32 +12,56 @@ public class TwitterApi extends DefaultApi10a
@Override
public String getAccessTokenEndpoint()
{
- return "https://" + ACCESS_TOKEN_RESOURCE;
+ return "http://" + ACCESS_TOKEN_RESOURCE;
}
@Override
public String getRequestTokenEndpoint()
{
- return "https://" + REQUEST_TOKEN_RESOURCE;
+ return "http://" + REQUEST_TOKEN_RESOURCE;
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
+ public static class SSL extends TwitterApi
+ {
+ @Override
+ public String getAccessTokenEndpoint()
+ {
+ return "https://" + ACCESS_TOKEN_RESOURCE;
+ }
+
+ @Override
+ public String getRequestTokenEndpoint()
+ {
+ return "https://" + REQUEST_TOKEN_RESOURCE;
+ }
+ }
+
/**
* Twitter 'friendlier' authorization endpoint for OAuth.
+ *
+ * Uses SSL.
*/
- public static class Authenticate extends TwitterApi
+ public static class Authenticate extends SSL
{
private static final String AUTHENTICATE_URL = "https://api.twitter.com/oauth/authenticate?oauth_token=%s";
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHENTICATE_URL, requestToken.getToken());
}
}
+
+ /**
+ * Just an alias to the default (SSL) authorization endpoint.
+ *
+ * Need to include this for symmetry with 'Authenticate' only.
+ */
+ public static class Authorize extends SSL{}
}
diff --git a/src/main/java/org/scribe/builder/api/UbuntuOneApi.java b/src/main/java/org/scribe/builder/api/UbuntuOneApi.java
index 2a72c3afe..af3bbed66 100644
--- a/src/main/java/org/scribe/builder/api/UbuntuOneApi.java
+++ b/src/main/java/org/scribe/builder/api/UbuntuOneApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
import org.scribe.services.*;
@@ -20,7 +21,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/VimeoApi.java b/src/main/java/org/scribe/builder/api/VimeoApi.java
index 231895dab..bf46bd078 100644
--- a/src/main/java/org/scribe/builder/api/VimeoApi.java
+++ b/src/main/java/org/scribe/builder/api/VimeoApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class VimeoApi extends DefaultApi10a
@@ -19,7 +20,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/XingApi.java b/src/main/java/org/scribe/builder/api/XingApi.java
index ec8823e67..6691318d5 100755
--- a/src/main/java/org/scribe/builder/api/XingApi.java
+++ b/src/main/java/org/scribe/builder/api/XingApi.java
@@ -19,7 +19,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/YahooApi.java b/src/main/java/org/scribe/builder/api/YahooApi.java
index e8a29a738..bdb42602b 100644
--- a/src/main/java/org/scribe/builder/api/YahooApi.java
+++ b/src/main/java/org/scribe/builder/api/YahooApi.java
@@ -1,5 +1,6 @@
package org.scribe.builder.api;
+import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
public class YahooApi extends DefaultApi10a
@@ -19,7 +20,7 @@ public String getRequestTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZE_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/builder/api/YammerApi.java b/src/main/java/org/scribe/builder/api/YammerApi.java
index e06543d97..1c03db29a 100644
--- a/src/main/java/org/scribe/builder/api/YammerApi.java
+++ b/src/main/java/org/scribe/builder/api/YammerApi.java
@@ -20,7 +20,7 @@ public String getAccessTokenEndpoint()
}
@Override
- public String getAuthorizationUrl(Token requestToken)
+ public String getAuthorizationUrl(Token requestToken, OAuthConfig config)
{
return String.format(AUTHORIZATION_URL, requestToken.getToken());
}
diff --git a/src/main/java/org/scribe/model/OAuthConfig.java b/src/main/java/org/scribe/model/OAuthConfig.java
index 51811d765..e397642fe 100644
--- a/src/main/java/org/scribe/model/OAuthConfig.java
+++ b/src/main/java/org/scribe/model/OAuthConfig.java
@@ -14,20 +14,24 @@ public class OAuthConfig
private final String callback;
private final SignatureType signatureType;
private final String scope;
+ private final String state;
+ private final String referenceId;
private final OutputStream debugStream;
public OAuthConfig(String key, String secret)
{
- this(key, secret, null, null, null, null);
+ this(key, secret, null, null, null, null, null, null);
}
- public OAuthConfig(String key, String secret, String callback, SignatureType type, String scope, OutputStream stream)
+ public OAuthConfig(String key, String secret, String callback, SignatureType type, String scope, String state, String refID, OutputStream stream)
{
this.apiKey = key;
this.apiSecret = secret;
this.callback = callback;
this.signatureType = type;
this.scope = scope;
+ this.state = state;
+ this.referenceId = refID;
this.debugStream = stream;
}
@@ -60,6 +64,16 @@ public boolean hasScope()
{
return scope != null;
}
+
+ public String getState()
+ {
+ return state;
+ }
+
+ public String getReferenceId()
+ {
+ return referenceId;
+ }
public void log(String message)
{
diff --git a/src/main/java/org/scribe/model/OAuthConstants.java b/src/main/java/org/scribe/model/OAuthConstants.java
index c442deeb7..26ab2cd65 100644
--- a/src/main/java/org/scribe/model/OAuthConstants.java
+++ b/src/main/java/org/scribe/model/OAuthConstants.java
@@ -32,7 +32,6 @@ private OAuthConstants(){}
public static final String CALLBACK = "oauth_callback";
public static final String VERSION = "oauth_version";
public static final String NONCE = "oauth_nonce";
- public static final String REALM = "realm";
public static final String PARAM_PREFIX = "oauth_";
public static final String TOKEN = "oauth_token";
public static final String TOKEN_SECRET = "oauth_token_secret";
@@ -41,9 +40,12 @@ private OAuthConstants(){}
public static final String HEADER = "Authorization";
public static final Token EMPTY_TOKEN = new Token("", "");
public static final String SCOPE = "scope";
+ public static final String REALM = "realm";
//OAuth 2.0
+ public static final String GRANT_TYPE = "grant_type";
public static final String ACCESS_TOKEN = "access_token";
+ public static final String REFRESH_TOKEN = "refresh_token";
public static final String CLIENT_ID = "client_id";
public static final String CLIENT_SECRET = "client_secret";
public static final String REDIRECT_URI = "redirect_uri";
diff --git a/src/main/java/org/scribe/model/OAuthRequest.java b/src/main/java/org/scribe/model/OAuthRequest.java
index d3b2e5ac4..6d27d9c92 100644
--- a/src/main/java/org/scribe/model/OAuthRequest.java
+++ b/src/main/java/org/scribe/model/OAuthRequest.java
@@ -42,13 +42,13 @@ public void addOAuthParameter(String key, String value)
private String checkKey(String key)
{
- if (key.startsWith(OAUTH_PREFIX) || key.equals(OAuthConstants.SCOPE))
+ if (key.startsWith(OAUTH_PREFIX) || key.equals(OAuthConstants.SCOPE) || key.equals(OAuthConstants.REALM))
{
return key;
}
else
{
- throw new IllegalArgumentException(String.format("OAuth parameters must either be '%s' or start with '%s'", OAuthConstants.SCOPE, OAUTH_PREFIX));
+ throw new IllegalArgumentException(String.format("OAuth parameters must either be '%s', '%s' or start with '%s'", OAuthConstants.SCOPE, OAuthConstants.REALM, OAUTH_PREFIX));
}
}
diff --git a/src/main/java/org/scribe/model/Parameter.java b/src/main/java/org/scribe/model/Parameter.java
index f22e30066..124efe1a9 100644
--- a/src/main/java/org/scribe/model/Parameter.java
+++ b/src/main/java/org/scribe/model/Parameter.java
@@ -44,4 +44,14 @@ public int compareTo(Parameter parameter)
return keyDiff != 0 ? keyDiff : value.compareTo(parameter.value);
}
+
+ public String getKey()
+ {
+ return this.key;
+ }
+
+ public String getValue()
+ {
+ return this.value;
+ }
}
diff --git a/src/main/java/org/scribe/model/ParameterList.java b/src/main/java/org/scribe/model/ParameterList.java
index 747b399f6..016fa4c54 100644
--- a/src/main/java/org/scribe/model/ParameterList.java
+++ b/src/main/java/org/scribe/model/ParameterList.java
@@ -111,4 +111,9 @@ public ParameterList sort()
Collections.sort(sorted.params);
return sorted;
}
+
+ public List getParams()
+ {
+ return this.params;
+ }
}
diff --git a/src/main/java/org/scribe/model/Request.java b/src/main/java/org/scribe/model/Request.java
index e48578e21..92481a593 100644
--- a/src/main/java/org/scribe/model/Request.java
+++ b/src/main/java/org/scribe/model/Request.java
@@ -82,10 +82,21 @@ private void createConnection() throws IOException
if (connection == null)
{
System.setProperty("http.keepAlive", connectionKeepAlive ? "true" : "false");
- connection = (HttpURLConnection) new URL(completeUrl).openConnection();
- connection.setInstanceFollowRedirects(followRedirects);
+ if (this.checkProxyable())
+ {
+ Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7552));
+ connection = (HttpURLConnection) new URL(completeUrl).openConnection(proxy);
+ }
+ else
+ {
+ connection = (HttpURLConnection) new URL(completeUrl).openConnection();
+ }
}
}
+
+ private boolean checkProxyable() {
+ return this.url.matches("^http(s)?://(www|graph)\\.facebook\\.com/.*$") || this.url.matches("^http(s)?://api\\.twitter\\.com/.*$");
+ }
/**
* Returns the complete url (host + resource + encoded querystring parameters).
@@ -99,8 +110,15 @@ public String getCompleteUrl()
Response doSend(RequestTuner tuner) throws IOException
{
+ if (connection.getURL().getProtocol().toLowerCase().contains("https"))
+ {
+ try
+ {
+ Response.trustAllHttpsCertificates();
+ } catch (Exception e) {}
+ }
connection.setRequestMethod(this.verb.name());
- if (connectTimeout != null)
+ if (connectTimeout != null)
{
connection.setConnectTimeout(connectTimeout.intValue());
}
diff --git a/src/main/java/org/scribe/model/Response.java b/src/main/java/org/scribe/model/Response.java
index d433922c6..35044f00d 100644
--- a/src/main/java/org/scribe/model/Response.java
+++ b/src/main/java/org/scribe/model/Response.java
@@ -4,6 +4,9 @@
import java.net.*;
import java.util.*;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSession;
+
import org.scribe.exceptions.*;
import org.scribe.utils.*;
@@ -26,6 +29,13 @@ public class Response
{
try
{
+ if (connection.getURL().getProtocol().toLowerCase().contains("https"))
+ {
+ try
+ {
+ Response.trustAllHttpsCertificates();
+ } catch (Exception e) {}
+ }
connection.connect();
code = connection.getResponseCode();
message = connection.getResponseMessage();
@@ -123,4 +133,41 @@ public String getHeader(String name)
return headers.get(name);
}
+ HostnameVerifier hv = new HostnameVerifier() {
+ public boolean verify(String urlHostName, SSLSession session) {
+ return true;
+ }
+ };
+
+ public static void trustAllHttpsCertificates() throws Exception {
+ javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
+ javax.net.ssl.TrustManager tm = new miTM();
+ trustAllCerts[0] = tm;
+ javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
+ sc.init(null, trustAllCerts, null);
+ javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+ }
+
+ static class miTM implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ public boolean isServerTrusted(java.security.cert.X509Certificate[] certs) {
+ return true;
+ }
+
+ public boolean isClientTrusted(java.security.cert.X509Certificate[] certs) {
+ return true;
+ }
+
+ public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) throws java.security.cert.CertificateException {
+ return;
+ }
+
+ public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) throws java.security.cert.CertificateException {
+ return;
+ }
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/org/scribe/model/SignatureType.java b/src/main/java/org/scribe/model/SignatureType.java
index 3440a361f..04fe63bc6 100644
--- a/src/main/java/org/scribe/model/SignatureType.java
+++ b/src/main/java/org/scribe/model/SignatureType.java
@@ -3,5 +3,6 @@
public enum SignatureType
{
Header,
- QueryString
+ QueryString,
+ PostBody
}
diff --git a/src/main/java/org/scribe/model/Token.java b/src/main/java/org/scribe/model/Token.java
index 4d8c0eeb5..f13decc50 100644
--- a/src/main/java/org/scribe/model/Token.java
+++ b/src/main/java/org/scribe/model/Token.java
@@ -11,9 +11,9 @@
public class Token implements Serializable
{
private static final long serialVersionUID = 715000866082812683L;
-
- private final String token;
- private final String secret;
+
+ protected final String token;
+ protected final String secret;
private final String rawResponse;
/**
diff --git a/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java b/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java
index 2b207f566..bc728abe7 100644
--- a/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java
+++ b/src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java
@@ -17,8 +17,9 @@ public class OAuth10aServiceImpl implements OAuthService
{
private static final String VERSION = "1.0";
- private OAuthConfig config;
- private DefaultApi10a api;
+ protected OAuthConfig config;
+ protected DefaultApi10a api;
+ protected String scope;
/**
* Default constructor
@@ -64,7 +65,7 @@ public Token getRequestToken(RequestTuner tuner)
return api.getRequestTokenExtractor().extract(body);
}
- private void addOAuthParams(OAuthRequest request, Token token)
+ protected void addOAuthParams(OAuthRequest request, Token token)
{
request.addOAuthParameter(OAuthConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds());
request.addOAuthParameter(OAuthConstants.NONCE, api.getTimestampService().getNonce());
@@ -140,10 +141,10 @@ public String getVersion()
*/
public String getAuthorizationUrl(Token requestToken)
{
- return api.getAuthorizationUrl(requestToken);
+ return api.getAuthorizationUrl(requestToken, this.config);
}
- private String getSignature(OAuthRequest request, Token token)
+ protected String getSignature(OAuthRequest request, Token token)
{
config.log("generating signature...");
config.log("using base64 encoder: " + Base64Encoder.type());
@@ -155,7 +156,7 @@ private String getSignature(OAuthRequest request, Token token)
return signature;
}
- private void appendSignature(OAuthRequest request)
+ protected void appendSignature(OAuthRequest request)
{
switch (config.getSignatureType())
{
@@ -173,9 +174,21 @@ private void appendSignature(OAuthRequest request)
request.addQuerystringParameter(entry.getKey(), entry.getValue());
}
break;
+ case PostBody:
+ for (Map.Entry entry : request.getOauthParameters().entrySet())
+ {
+ request.addBodyParameter(entry.getKey(), entry.getValue());
+ }
+ break;
}
}
+ @Override
+ public OAuthConfig getConfig()
+ {
+ return this.config;
+ }
+
private static class TimeoutTuner extends RequestTuner
{
private final int duration;
diff --git a/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java b/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java
index 6262c3700..122fdee0a 100644
--- a/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java
+++ b/src/main/java/org/scribe/oauth/OAuth20ServiceImpl.java
@@ -7,8 +7,8 @@ public class OAuth20ServiceImpl implements OAuthService
{
private static final String VERSION = "2.0";
- private final DefaultApi20 api;
- private final OAuthConfig config;
+ protected final DefaultApi20 api;
+ protected final OAuthConfig config;
/**
* Default constructor
@@ -28,6 +28,7 @@ public OAuth20ServiceImpl(DefaultApi20 api, OAuthConfig config)
public Token getAccessToken(Token requestToken, Verifier verifier)
{
OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
+ request.addQuerystringParameter(OAuthConstants.GRANT_TYPE, "authorization_code");
request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey());
request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret());
request.addQuerystringParameter(OAuthConstants.CODE, verifier.getValue());
@@ -69,4 +70,19 @@ public String getAuthorizationUrl(Token requestToken)
return api.getAuthorizationUrl(config);
}
+ @Override
+ public OAuthConfig getConfig()
+ {
+ return this.config;
+ }
+
+ public Token refreshToken(Token refreshToken, String sessionHandle)
+ {
+ OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
+ request.addQuerystringParameter(OAuthConstants.GRANT_TYPE, "refresh_token");
+ request.addQuerystringParameter(OAuthConstants.REFRESH_TOKEN, refreshToken.getToken());
+ if(config.hasScope()) request.addQuerystringParameter(OAuthConstants.SCOPE, config.getScope());
+ Response response = request.send();
+ return api.getAccessTokenExtractor().extract(response.getBody());
+ }
}
diff --git a/src/main/java/org/scribe/oauth/OAuthService.java b/src/main/java/org/scribe/oauth/OAuthService.java
index 0c9c57e9b..23f45d8e1 100644
--- a/src/main/java/org/scribe/oauth/OAuthService.java
+++ b/src/main/java/org/scribe/oauth/OAuthService.java
@@ -50,4 +50,10 @@ public interface OAuthService
* @return the URL where you should redirect your users
*/
public String getAuthorizationUrl(Token requestToken);
+
+ /**
+ * Return oauth configuration for this service instance
+ * @return
+ */
+ public OAuthConfig getConfig();
}
diff --git a/src/test/java/org/scribe/examples/FoursquareExample.java b/src/test/java/org/scribe/examples/FoursquareExample.java
deleted file mode 100644
index b227488c7..000000000
--- a/src/test/java/org/scribe/examples/FoursquareExample.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class FoursquareExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.foursquare.com/v1/user";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(FoursquareApi.class)
- .apiKey("FEGFXJUFANVVDHVSNUAMUKTTXCP1AJQD53E33XKJ44YP1S4I")
- .apiSecret("AYWKUL5SWPNC0CTQ202QXRUG2NLZYXMRA34ZSDW4AUYBG2RC")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Foursquare's OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Request Token
- System.out.println("Fetching the Request Token...");
- Token requestToken = service.getRequestToken();
- System.out.println("Got the Request Token!");
- System.out.println();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- System.out.println("And paste the verifier here");
- System.out.print(">>");
- Verifier verifier = new Verifier(in.nextLine());
- System.out.println();
-
- // Trade the Request Token and Verfier for the Access Token
- System.out.println("Trading the Request Token for an Access Token...");
- Token accessToken = service.getAccessToken(requestToken, verifier);
- System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
- System.out.println();
-
- // Now let's go and ask for a protected resource!
- System.out.println("Now we're going to access a protected resource...");
- OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
- service.signRequest(accessToken, request);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-
-}
\ No newline at end of file
diff --git a/src/test/java/org/scribe/examples/GoogleExample.java b/src/test/java/org/scribe/examples/GoogleExample.java
deleted file mode 100644
index fef1b43c9..000000000
--- a/src/test/java/org/scribe/examples/GoogleExample.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.scribe.examples;
-
-import java.util.*;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class GoogleExample
-{
- private static final String NETWORK_NAME = "Google";
- private static final String AUTHORIZE_URL = "https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=";
- private static final String PROTECTED_RESOURCE_URL = "https://docs.google.com/feeds/default/private/full/";
- private static final String SCOPE = "https://docs.google.com/feeds/";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(GoogleApi.class)
- .apiKey("anonymous")
- .apiSecret("anonymous")
- .scope(SCOPE)
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Request Token
- System.out.println("Fetching the Request Token...");
- Token requestToken = service.getRequestToken();
- System.out.println("Got the Request Token!");
- System.out.println("(if your curious it looks like this: " + requestToken + " )");
- System.out.println();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(AUTHORIZE_URL + requestToken.getToken());
- System.out.println("And paste the verifier here");
- System.out.print(">>");
- Verifier verifier = new Verifier(in.nextLine());
- System.out.println();
-
- // Trade the Request Token and Verfier for the Access Token
- System.out.println("Trading the Request Token for an Access Token...");
- Token accessToken = service.getAccessToken(requestToken, verifier);
- System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
- System.out.println();
-
- // Now let's go and ask for a protected resource!
- System.out.println("Now we're going to access a protected resource...");
- OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
- service.signRequest(accessToken, request);
- request.addHeader("GData-Version", "3.0");
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getCode());
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
-
- }
-}
\ No newline at end of file
diff --git a/src/test/java/org/scribe/examples/LinkedInExample.java b/src/test/java/org/scribe/examples/LinkedInExample.java
deleted file mode 100644
index 703cc8275..000000000
--- a/src/test/java/org/scribe/examples/LinkedInExample.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class LinkedInExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~/connections:(id,last-name)";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(LinkedInApi.class)
- .apiKey("CiEgwWDkA5BFpNrc0RfGyVuSlOh4tig5kOTZ9q97qcXNrFl7zqk-Ts7DqRGaKDCV")
- .apiSecret("dhho4dfoCmiQXrkw4yslork5XWLFnPSuMR-8gscPVjY4jqFFHPYWJKgpFl4uLTM6")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== LinkedIn's OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Request Token
- System.out.println("Fetching the Request Token...");
- Token requestToken = service.getRequestToken();
- System.out.println("Got the Request Token!");
- System.out.println();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- System.out.println("And paste the verifier here");
- System.out.print(">>");
- Verifier verifier = new Verifier(in.nextLine());
- System.out.println();
-
- // Trade the Request Token and Verfier for the Access Token
- System.out.println("Trading the Request Token for an Access Token...");
- Token accessToken = service.getAccessToken(requestToken, verifier);
- System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
- System.out.println();
-
- // Now let's go and ask for a protected resource!
- System.out.println("Now we're going to access a protected resource...");
- OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
- service.signRequest(accessToken, request);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
- }
-
-}
diff --git a/src/test/java/org/scribe/examples/TwitterExample.java b/src/test/java/org/scribe/examples/TwitterExample.java
index 7573ed603..28d9bea54 100644
--- a/src/test/java/org/scribe/examples/TwitterExample.java
+++ b/src/test/java/org/scribe/examples/TwitterExample.java
@@ -9,11 +9,10 @@
public class TwitterExample
{
- private static final String PROTECTED_RESOURCE_URL = "https://api.twitter.com/1.1/account/verify_credentials.json";
+ private static final String PROTECTED_RESOURCE_URL = "https://api.twitter.com/1/statuses/update.json";
public static void main(String[] args)
{
- // If you choose to use a callback, "oauth_verifier" will be the return value by Twitter (request param)
OAuthService service = new ServiceBuilder()
.provider(TwitterApi.class)
.apiKey("6icbcAXyZx67r8uTAUM5Qw")
@@ -46,7 +45,7 @@ public static void main(String[] args)
// Now let's go and ask for a protected resource!
System.out.println("Now we're going to access a protected resource...");
- OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
+ OAuthRequest request = new OAuthRequest(Verb.POST, PROTECTED_RESOURCE_URL);
request.addBodyParameter("status", "this is sparta! *");
service.signRequest(accessToken, request);
Response response = request.send();
@@ -55,7 +54,7 @@ public static void main(String[] args)
System.out.println(response.getBody());
System.out.println();
- System.out.println("That's it man! Go and build something awesome with Scribe! :)");
+ System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
}
-}
+}
\ No newline at end of file
diff --git a/src/test/java/org/scribe/examples/YahooExample.java b/src/test/java/org/scribe/examples/YahooExample.java
deleted file mode 100644
index 2e3f336f0..000000000
--- a/src/test/java/org/scribe/examples/YahooExample.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.scribe.examples;
-
-import java.util.Scanner;
-
-import org.scribe.builder.*;
-import org.scribe.builder.api.*;
-import org.scribe.model.*;
-import org.scribe.oauth.*;
-
-public class YahooExample
-{
- private static final String PROTECTED_RESOURCE_URL = "http://social.yahooapis.com/v1/user/A6ROU63MXWDCW3Y5MGCYWVHDJI/profile/status?format=json";
-
- public static void main(String[] args)
- {
- OAuthService service = new ServiceBuilder()
- .provider(YahooApi.class)
- .apiKey("dj0yJmk9TXZDWVpNVVdGaVFmJmQ9WVdrOWMweHZXbkZLTkhVbWNHbzlNVEl5TWprd05qUTJNZy0tJnM9Y29uc3VtZXJzZWNyZXQmeD0wMw--")
- .apiSecret("262be559f92a2be20c4c039419018f2b48cdfce9")
- .build();
- Scanner in = new Scanner(System.in);
-
- System.out.println("=== Yahoo's OAuth Workflow ===");
- System.out.println();
-
- // Obtain the Request Token
- System.out.println("Fetching the Request Token...");
- Token requestToken = service.getRequestToken();
- System.out.println("Got the Request Token!");
- System.out.println();
-
- System.out.println("Now go and authorize Scribe here:");
- System.out.println(service.getAuthorizationUrl(requestToken));
- System.out.println("And paste the verifier here");
- System.out.print(">>");
- Verifier verifier = new Verifier(in.nextLine());
- System.out.println();
-
- // Trade the Request Token and Verfier for the Access Token
- System.out.println("Trading the Request Token for an Access Token...");
- Token accessToken = service.getAccessToken(requestToken, verifier);
- System.out.println("Got the Access Token!");
- System.out.println("(if your curious it looks like this: " + accessToken + " )");
- System.out.println();
-
- // Now let's go and ask for a protected resource!
- System.out.println("Now we're going to access a protected resource...");
- OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
- service.signRequest(accessToken, request);
- Response response = request.send();
- System.out.println("Got it! Lets see what we found...");
- System.out.println();
- System.out.println(response.getCode());
- System.out.println(response.getBody());
-
- System.out.println();
- System.out.println("Thats it man! Go and build something awesome with Scribe! :)");
-
- }
-}
diff --git a/src/test/java/org/scribe/extractors/HeaderExtractorTest.java b/src/test/java/org/scribe/extractors/HeaderExtractorTest.java
deleted file mode 100644
index bdc727cd8..000000000
--- a/src/test/java/org/scribe/extractors/HeaderExtractorTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.scribe.extractors;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-import org.scribe.exceptions.*;
-import org.scribe.model.*;
-import org.scribe.test.helpers.*;
-
-public class HeaderExtractorTest
-{
-
- private HeaderExtractorImpl extractor;
- private OAuthRequest request;
-
- @Before
- public void setup()
- {
- request = ObjectMother.createSampleOAuthRequest();
- extractor = new HeaderExtractorImpl();
- }
-
- @Test
- public void shouldExtractStandardHeader()
- {
- String expected = "OAuth oauth_callback=\"http%3A%2F%2Fexample%2Fcallback\", " + "oauth_signature=\"OAuth-Signature\", "
- + "oauth_consumer_key=\"AS%23%24%5E%2A%40%26\", " + "oauth_timestamp=\"123456\"";
- String header = extractor.extract(request);
- assertEquals(expected, header);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void shouldExceptionIfRequestIsNull()
- {
- OAuthRequest nullRequest = null;
- extractor.extract(nullRequest);
- }
-
- @Test(expected = OAuthParametersMissingException.class)
- public void shouldExceptionIfRequestHasNoOAuthParams()
- {
- OAuthRequest emptyRequest = new OAuthRequest(Verb.GET, "http://example.com");
- extractor.extract(emptyRequest);
- }
-}
diff --git a/src/test/java/org/scribe/model/OAuthRequestTest.java b/src/test/java/org/scribe/model/OAuthRequestTest.java
deleted file mode 100644
index 1ea2f2fb9..000000000
--- a/src/test/java/org/scribe/model/OAuthRequestTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.scribe.model;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
-public class OAuthRequestTest
-{
-
- private OAuthRequest request;
-
- @Before
- public void setup()
- {
- request = new OAuthRequest(Verb.GET, "http://example.com");
- }
-
- @Test
- public void shouldAddOAuthParamters()
- {
- request.addOAuthParameter(OAuthConstants.TOKEN, "token");
- request.addOAuthParameter(OAuthConstants.NONCE, "nonce");
- request.addOAuthParameter(OAuthConstants.TIMESTAMP, "ts");
- request.addOAuthParameter(OAuthConstants.SCOPE, "feeds");
-
- assertEquals(4, request.getOauthParameters().size());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowExceptionIfParameterIsNotOAuth()
- {
- request.addOAuthParameter("otherParam", "value");
- }
-}
diff --git a/src/test/java/org/scribe/model/ResponseTest.java b/src/test/java/org/scribe/model/ResponseTest.java
deleted file mode 100644
index a58fc0355..000000000
--- a/src/test/java/org/scribe/model/ResponseTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.scribe.model;
-
-import static org.junit.Assert.*;
-
-import java.io.*;
-
-import org.junit.*;
-
-public class ResponseTest
-{
-
- private Response response;
- private ConnectionStub connection;
-
- @Before
- public void setup() throws Exception
- {
- connection = new ConnectionStub();
- connection.addResponseHeader("one", "one");
- connection.addResponseHeader("two", "two");
- response = new Response(connection);
- }
-
- @Test
- public void shouldPopulateResponseHeaders()
- {
- assertEquals(2, response.getHeaders().size());
- assertEquals("one", response.getHeader("one"));
- }
-
- @Test
- public void shouldParseBodyContents()
- {
- assertEquals("contents", response.getBody());
- assertEquals(1, connection.getTimesCalledInpuStream());
- }
-
- @Test
- public void shouldParseBodyContentsOnlyOnce()
- {
- assertEquals("contents", response.getBody());
- assertEquals("contents", response.getBody());
- assertEquals("contents", response.getBody());
- assertEquals(1, connection.getTimesCalledInpuStream());
- }
-
- @Test
- public void shouldHandleAConnectionWithErrors() throws Exception
- {
- Response errResponse = new Response(new FaultyConnection());
- assertEquals(400, errResponse.getCode());
- assertEquals("errors", errResponse.getBody());
- }
-
- private static class FaultyConnection extends ConnectionStub
- {
-
- public FaultyConnection() throws Exception
- {
- super();
- }
-
- @Override
- public InputStream getErrorStream()
- {
- return new ByteArrayInputStream("errors".getBytes());
- }
-
- @Override
- public int getResponseCode() throws IOException
- {
- return 400;
- }
- }
-}
diff --git a/src/test/java/org/scribe/services/HMACSha1SignatureServiceTest.java b/src/test/java/org/scribe/services/HMACSha1SignatureServiceTest.java
deleted file mode 100644
index ec058a773..000000000
--- a/src/test/java/org/scribe/services/HMACSha1SignatureServiceTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.scribe.services;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-import org.scribe.exceptions.*;
-
-public class HMACSha1SignatureServiceTest
-{
-
- private HMACSha1SignatureService service;
-
- @Before
- public void setup()
- {
- service = new HMACSha1SignatureService();
- }
-
- @Test
- public void shouldReturnSignatureMethodString()
- {
- String expected = "HMAC-SHA1";
- assertEquals(expected, service.getSignatureMethod());
- }
-
- @Test
- public void shouldReturnSignature()
- {
- String apiSecret = "api secret";
- String tokenSecret = "token secret";
- String baseString = "base string";
- String signature = "uGymw2KHOTWI699YEaoi5xyLT50=";
- assertEquals(signature, service.getSignature(baseString, apiSecret, tokenSecret));
- }
-
- @Test(expected = OAuthException.class)
- public void shouldThrowExceptionIfBaseStringIsNull()
- {
- service.getSignature(null, "apiSecret", "tokenSecret");
- }
-
- @Test(expected = OAuthException.class)
- public void shouldThrowExceptionIfBaseStringIsEmpty()
- {
- service.getSignature(" ", "apiSecret", "tokenSecret");
- }
-
- @Test(expected = OAuthException.class)
- public void shouldThrowExceptionIfApiSecretIsNull()
- {
- service.getSignature("base string", null, "tokenSecret");
- }
-
- @Test(expected = OAuthException.class)
- public void shouldThrowExceptionIfApiSecretIsEmpty()
- {
- service.getSignature("base string", " ", "tokenSecret");
- }
-}
diff --git a/src/test/java/org/scribe/services/TimestampServiceTest.java b/src/test/java/org/scribe/services/TimestampServiceTest.java
deleted file mode 100644
index 352b962ca..000000000
--- a/src/test/java/org/scribe/services/TimestampServiceTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.scribe.services;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
-public class TimestampServiceTest
-{
-
- private TimestampServiceImpl service;
- private TimestampServiceImpl.Timer timerStub;
-
- @Before
- public void setup()
- {
- service = new TimestampServiceImpl();
- timerStub = new TimerStub();
- service.setTimer(timerStub);
- }
-
- @Test
- public void shouldReturnTimestampInSeconds()
- {
- String expected = "1000";
- assertEquals(expected, service.getTimestampInSeconds());
- }
-
- @Test
- public void shouldReturnNonce()
- {
- String expected = "1042";
- assertEquals(expected, service.getNonce());
- }
-
- private static class TimerStub extends TimestampServiceImpl.Timer
- {
-
- @Override
- public Long getMilis()
- {
- return 1000000L;
- }
-
- @Override
- public Integer getRandomInteger()
- {
- return 42;
- }
- }
-}
diff --git a/src/test/java/org/scribe/utils/StreamUtilsTest.java b/src/test/java/org/scribe/utils/StreamUtilsTest.java
deleted file mode 100644
index 976914d05..000000000
--- a/src/test/java/org/scribe/utils/StreamUtilsTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.scribe.utils;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-public class StreamUtilsTest
-{
-
- @Test
- public void shouldCorrectlyDecodeAStream()
- {
- String value = "expected";
- InputStream is = new ByteArrayInputStream(value.getBytes());
- String decoded = StreamUtils.getStreamContents(is);
- assertEquals("expected", decoded);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void shouldFailForNullParameter()
- {
- InputStream is = null;
- StreamUtils.getStreamContents(is);
- fail("Must throw exception before getting here");
- }
-}