/** * Copyright (C) 2011 Talend Inc. - www.talend.com */ package oauth.thirdparty; import java.net.URI; import java.util.HashMap; import java.util.Map; import oauth.common.OAuthConstants; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.rs.security.oauth.client.OAuthClientUtils; import org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Consumer; import org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token; import org.apache.cxf.rs.security.oauth.provider.OAuthServiceException; public class OAuthClientManager { private static final String DEFAULT_CLIENT_ID = "123456789"; private static final String DEFAULT_CLIENT_SECRET = "987654321"; private WebClient accessTokenService; private WebClient requestTokenService; private String authorizationServiceURI; private Consumer consumer = new Consumer(DEFAULT_CLIENT_ID, DEFAULT_CLIENT_SECRET); public OAuthClientManager() { } public URI getAuthorizationServiceURI(String token) { return OAuthClientUtils.getAuthorizationURI(authorizationServiceURI, token); } public Token getRequestToken(URI callback, ReservationRequest request) { try { // This is an optional step. Without requesting this extra scope // the client will not be able to update the user's calendar. // Note that the Social.com has documented the format of this scope // as updateCalendar-x where x is a specific hour. // Social.com has also documented that a "readCalendar" scoped will be // allocated by default Map<String, String> extraParams = new HashMap<String, String>(); extraParams.put(org.apache.cxf.rs.security.oauth.utils.OAuthConstants.X_OAUTH_SCOPE, OAuthConstants.UPDATE_CALENDAR_SCOPE + request.getHour()); return OAuthClientUtils.getRequestToken(requestTokenService, consumer, callback, extraParams); } catch (OAuthServiceException ex) { return null; } } public Token getAccessToken(Token requestToken, String verifier) { try { return OAuthClientUtils.getAccessToken(accessTokenService, consumer, requestToken, verifier); } catch (OAuthServiceException ex) { return null; } } public String createAuthorizationHeader(Token token, String method, String requestURI) { return OAuthClientUtils.createAuthorizationHeader(consumer, token, method, requestURI); } public void setAccessTokenService(WebClient ats) { this.accessTokenService = ats; } public void setRequestTokenService(WebClient rts) { this.requestTokenService = rts; } public void setAuthorizationURI(String uri) { this.authorizationServiceURI = uri; } }