/** * Converts the {@code Request} to an {@code OAuthMessage}. * * @param request {@code Request} to be converted to an {@code OAuthMessage} * @return {@code OAuthMessage} converted from the {@code Request} */ public static OAuthMessage asOAuthMessage(final com.atlassian.oauth.Request request) { checkNotNull(request, "request"); return new OAuthMessage( request.getMethod().name(), request.getUri().toString(), // We'd rather not do the copy, but since we need a Collection of these things we don't have much choice ImmutableList.copyOf(asOAuthParameters(request.getParameters())) ); }
public Request(HttpMethod method, URI uri, Iterable<Parameter> parameters) { this.method = checkNotNull(method, "method"); this.uri = checkNotNull(uri, "uri"); this.parameters = copy(parameters); }
/** * Returns the value of the parameter. If there are multiple parameters for the value, only the first is returned. * * @return the value of the parameter */ public String getParameter(String parameterName) { Iterable<String> values = getParameterMap().get(parameterName); if (values == null) { return null; } Iterator<String> it = values.iterator(); if (!it.hasNext()) { return null; } return it.next(); }
private Map<String, Iterable<String>> getParameterMap() { if (parameterMap == null) { parameterMap = makeUnmodifiableMap(makeParameterMap()); } return parameterMap; }
private Request sign(Request request, OAuthAccessor accessor) { try { final URI requestUri = request.getUri(); Preconditions.checkArgument(requestUri.normalize().getPath().equals(requestUri.getPath()), "Refusing to sign non-normalized URL: " + requestUri); OAuthMessage oauthMessage = accessor.newRequestMessage( request.getMethod().name(), requestUri.toString(), asOAuthParameters(request.getParameters()) ); log.debug("Signed request {}", oauthMessage); return new Request(request.getMethod(), requestUri, fromOAuthParameters(oauthMessage.getParameters())); } catch (net.oauth.OAuthException e) { throw new OAuthSigningException("Failed to sign the request", e); } catch (IOException e) { // this shouldn't happen as the message is not being read from any IO streams, but the OAuth library throws // these around like they're candy, but far less sweet and tasty. throw new RuntimeException(e); } catch (URISyntaxException e) { // this shouldn't happen unless the caller somehow passed us an invalid URI object throw new RuntimeException(e); } }
@Override protected Request createUnsignedRequest() { // 2LO means oauth_token must be empty string return new com.atlassian.oauth.Request(toOAuthMethodType(methodType), URI.create(url), toOAuthParameters("")); } }
public ConsumerToken getRequestToken(ServiceProvider serviceProvider, final String consumerKey, String callback) throws ResponseException { final Request oAuthRequest = new Request(Request.HttpMethod.POST, serviceProvider.getRequestTokenUri(), Collections.singleton(new Request.Parameter(OAuth.OAUTH_CALLBACK, callback))); final Request signedRequest = consumerService.sign(oAuthRequest, consumerKey, serviceProvider); final com.atlassian.sal.api.net.Request tokenRequest = requestFactory.createRequest( com.atlassian.sal.api.net.Request.MethodType.POST, serviceProvider.getRequestTokenUri().toString()); tokenRequest.addRequestParameters(parameterToStringArray(signedRequest.getParameters())); final TokenAndSecret tokenAndSecret = requestToken(serviceProvider.getRequestTokenUri().toString(), signedRequest); final ConsumerToken requestToken = ConsumerToken.newRequestToken(tokenAndSecret.token) .tokenSecret(tokenAndSecret.secret) .consumer(getConsumer(consumerKey)) .build(); assert (requestToken.isRequestToken()); return requestToken; }
private TokenAndSecret requestToken(String url, Request signedRequest) throws ResponseException { final com.atlassian.sal.api.net.Request tokenRequest = requestFactory.createRequest(com.atlassian.sal.api.net.Request.MethodType.POST, url); tokenRequest.addRequestParameters(parameterToStringArray(signedRequest.getParameters()));
private Request asOAuthRequest(final HttpServletRequest request) { Iterable<Parameter> parameters = filter(transform(Arrays.asList(request.getParameterValues("p")), new Function<String, Parameter>() { public Parameter apply(String parameterNumber) { if (isBlank(request.getParameter("p" + parameterNumber))) { return null; } return new Parameter(request.getParameter("p" + parameterNumber), request.getParameter("v" + parameterNumber)); } }), notNull()); if (!isBlank(request.getParameter("timestamp"))) { parameters = concat(parameters, ImmutableList.of(new Parameter("oauth_timestamp", request.getParameter("timestamp")))); } if (!isBlank(request.getParameter("nonce"))) { parameters = concat(parameters, ImmutableList.of(new Parameter("oauth_nonce", request.getParameter("nonce")))); } return new Request(HttpMethod.valueOf(request.getParameter("method")), URI.create(request.getParameter("uri")), parameters); }
/** * Converts the {@code Request} to an {@code OAuthMessage}. * * @param request {@code Request} to be converted to an {@code OAuthMessage} * @return {@code OAuthMessage} converted from the {@code Request} */ public static OAuthMessage asOAuthMessage(Request request) { checkNotNull(request, "request"); return new OAuthMessage( request.getMethod().name(), request.getUri().toString(), // We'd rather not do the copy, but since we need a Collection of these things we don't have much choice ImmutableList.copyOf(asOAuthParameters(request.getParameters())) ); }
/** * Converts the {@code OAuthMessage} to an {@code Request}. * * @param message {@code OAuthMessage} to be converted to an {@code Request} * @return {@code Request} converted from {@code OAuthMessage} */ public static Request fromOAuthMessage(OAuthMessage message) { checkNotNull(message, "message"); try { return new Request( HttpMethod.valueOf(message.method.toUpperCase()), URI.create(message.URL), fromOAuthParameters(message.getParameters()) ); } catch (IOException e) { throw new RuntimeException("Failed to convert from OAuthMessage", e); } }
@Override protected Request createUnsignedRequest() { // a 3LO request needs a valid OAuth token. return new com.atlassian.oauth.Request(toOAuthMethodType(methodType), URI.create(url), toOAuthParameters(consumerToken.getToken())); }
public ConsumerToken getAccessToken(ServiceProvider serviceProvider, ConsumerToken requestTokenPair, String requestVerifier, final String consumerKey) throws ResponseException { final List<Request.Parameter> parameters = new ArrayList<Request.Parameter>(); parameters.add(new Request.Parameter(OAuth.OAUTH_TOKEN, requestTokenPair.getToken())); if (StringUtils.isNotBlank(requestVerifier)) // Added in OAuth 1.0a { parameters.add(new Request.Parameter(OAuth.OAUTH_VERIFIER, requestVerifier)); } final Request oAuthRequest = new Request(Request.HttpMethod.POST, serviceProvider.getAccessTokenUri(), parameters); final Request signedRequest = consumerService.sign(oAuthRequest, serviceProvider, requestTokenPair); final TokenAndSecret tokenAndSecret = requestToken(serviceProvider.getAccessTokenUri().toString(), signedRequest); ConsumerToken accessToken = ConsumerToken.newAccessToken(tokenAndSecret.token).tokenSecret(tokenAndSecret.secret).consumer(getConsumer(consumerKey)).build(); assert (accessToken.isAccessToken()); return accessToken; }