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); }
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); } }
/** * 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); } }
/** * 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())) ); }
/** * 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())) ); }
private void validateMethod(HttpServletRequest request, ImmutableMap.Builder<String, String> errors) { if (isBlank(request.getParameter("method"))) { errors.put("method", "Required"); } else { try { HttpMethod.valueOf(request.getParameter("method")); } catch (IllegalArgumentException e) { errors.put("method", "Must be one of GET, POST, PUT, DELETE, HEAD, or OPTIONS"); } } } }