Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions 34 src/main/java/org/scribe/builder/api/BiblioetecaApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.scribe.builder.api;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.scribe.model.Token;

public class BiblioetecaApi extends DefaultApi10
{
private static final String AUTHORIZE_URL = "http://www.biblioeteca.com/biblioeteca.web/authorize?oauth_token=%s";

@Override
public String getAccessTokenEndpoint()
{
return "http://api.biblioeteca.com/biblioeteca.web/access_token";
}

@Override
public String getRequestTokenEndpoint()
{
return "http://api.biblioeteca.com/biblioeteca.web/request_token";
}

@Override
public String getAuthorizationUrl(Token requestToken, String callback)
{
String url = String.format(AUTHORIZE_URL, requestToken.getToken());
try {
return url+"&oauth_callback="+URLEncoder.encode(callback, "UTF-8");
} catch (UnsupportedEncodingException e) {
return url;
}
}
}
67 changes: 67 additions & 0 deletions 67 src/main/java/org/scribe/builder/api/BiblioetecaApi20.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package org.scribe.builder.api;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.scribe.exceptions.OAuthException;
import org.scribe.extractors.AccessTokenExtractor;
import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
import org.scribe.model.Verb;
import org.scribe.oauth.OAuth20HeaderServiceImpl;
import org.scribe.oauth.OAuthService;
import org.scribe.utils.OAuthEncoder;
import org.scribe.utils.Preconditions;

public class BiblioetecaApi20 extends DefaultApi20
{
private static final String AUTHORIZE_URL = "http://api.biblioeteca.com/biblioeteca.web/oauth2/authorize?client_id=%s&response_type=code&redirect_uri=%s";
private static final String ACCESS_TOKEN_URL="http://api.biblioeteca.com/biblioeteca.web/oauth2/token?grant_type=authorization_code";

@Override
public String getAccessTokenEndpoint()
{
return ACCESS_TOKEN_URL;
}

@Override
public String getAuthorizationUrl(OAuthConfig config) {
return String.format(AUTHORIZE_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()));
}

@Override
public Verb getAccessTokenVerb() {
return Verb.POST;
}

// {"expires_in":"3600","refresh_token":"301f4c7f388f25a5a98d0cfb5c910","access_token":"db3a5a071f5563f75ca3b7f6573b352"}

@Override
public AccessTokenExtractor getAccessTokenExtractor() {
return new AccessTokenExtractor() {

@Override
public Token extract(String response) {
Preconditions.checkEmptyString(response, "Response body is incorrect. Can't extract a token from an empty string");

Matcher matcher = Pattern.compile("\"access_token\":\"([^&\"]+)\"").matcher(response);
if (matcher.find())
{
String token = OAuthEncoder.decode(matcher.group(1));
return new Token(token, "", response);
}
else
{
throw new OAuthException("Response body is incorrect. Can't extract a token from this: '" + response + "'", null);
}
}
};
}

@Override
public OAuthService createService(OAuthConfig config)
{
return new OAuth20HeaderServiceImpl(this, config);
}

}
153 changes: 153 additions & 0 deletions 153 src/main/java/org/scribe/builder/api/DefaultApi10.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
package org.scribe.builder.api;

import org.scribe.extractors.AccessTokenExtractor;
import org.scribe.extractors.BaseStringExtractor;
import org.scribe.extractors.BaseStringExtractorImpl;
import org.scribe.extractors.HeaderExtractor;
import org.scribe.extractors.HeaderExtractorImpl;
import org.scribe.extractors.RequestTokenExtractor;
import org.scribe.extractors.TokenExtractorImpl;
import org.scribe.model.OAuthConfig;
import org.scribe.model.Token;
import org.scribe.model.Verb;
import org.scribe.oauth.OAuth10ServiceImpl;
import org.scribe.oauth.OAuthService;
import org.scribe.services.HMACSha1SignatureService;
import org.scribe.services.SignatureService;
import org.scribe.services.TimestampService;
import org.scribe.services.TimestampServiceImpl;

/**
* Default implementation of the OAuth protocol, version 1.0
*
* This class is meant to be extended by concrete implementations of the API,
* providing the endpoints and endpoint-http-verbs.
*
* If your Api adheres to the 1.0 protocol correctly, you just need to extend
* this class and define the getters for your endpoints.
*
* If your Api does something a bit different, you can override the different
* extractors or services, in order to fine-tune the process. Please read the
* javadocs of the interfaces to get an idea of what to do.
*
* @author Pablo Fernandez (copy of OAuth 1.0a), patched by Martin Vlcek (OAuth 1.0)
*
*/
public abstract class DefaultApi10 implements Api
{
/**
* Returns the access token extractor.
*
* @return access token extractor
*/
public AccessTokenExtractor getAccessTokenExtractor()
{
return new TokenExtractorImpl();
}

/**
* Returns the base string extractor.
*
* @return base string extractor
*/
public BaseStringExtractor getBaseStringExtractor()
{
return new BaseStringExtractorImpl();
}

/**
* Returns the header extractor.
*
* @return header extractor
*/
public HeaderExtractor getHeaderExtractor()
{
return new HeaderExtractorImpl();
}

/**
* Returns the request token extractor.
*
* @return request token extractor
*/
public RequestTokenExtractor getRequestTokenExtractor()
{
return new TokenExtractorImpl();
}

/**
* Returns the signature service.
*
* @return signature service
*/
public SignatureService getSignatureService()
{
return new HMACSha1SignatureService();
}

/**
* Returns the timestamp service.
*
* @return timestamp service
*/
public TimestampService getTimestampService()
{
return new TimestampServiceImpl();
}

/**
* Returns the verb for the access token endpoint (defaults to POST)
*
* @return access token endpoint verb
*/
public Verb getAccessTokenVerb()
{
return Verb.POST;
}

/**
* Returns the verb for the request token endpoint (defaults to POST)
*
* @return request token endpoint verb
*/
public Verb getRequestTokenVerb()
{
return Verb.POST;
}

/**
* Returns the URL that receives the request token requests.
*
* @return request token URL
*/
public abstract String getRequestTokenEndpoint();

/**
* Returns the URL that receives the access token requests.
*
* @return access token URL
*/
public abstract String getAccessTokenEndpoint();

/**
* Returns the URL where you should redirect your users to authenticate
* your application.
*
* @param requestToken the request token you need to authorize
* @return the URL where you should redirect your users
*/
public abstract String getAuthorizationUrl(Token requestToken, String callback);

/**
* Returns the {@link OAuthService} for this Api
*
* @param apiKey Key
* @param apiSecret Api Secret
* @param callback OAuth callback (either URL or 'oob')
* @param scope OAuth scope (optional)
*/
public OAuthService createService(OAuthConfig config)
{
return new OAuth10ServiceImpl(this, config);
}
}
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.