PageRenderTime 53ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/app/com/atlassian/connect/play/java/oauth/OAuthRequestValidatorAction.java

https://bitbucket.org/awei/ac-play-java
Java | 53 lines | 48 code | 5 blank | 0 comment | 0 complexity | d1bd653717e8eac3e9bbe74828b680fb MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.connect.play.java.oauth;
  2. import com.atlassian.connect.play.java.AC;
  3. import com.atlassian.connect.play.java.AcHost;
  4. import com.atlassian.connect.play.java.PublicKeyStore;
  5. import com.google.common.base.Function;
  6. import play.mvc.Action;
  7. import play.mvc.Http;
  8. import play.mvc.Result;
  9. public final class OAuthRequestValidatorAction extends Action.Simple
  10. {
  11. private final OAuthRequestValidator<Http.Request> validator = new OAuthRequestValidator<>(new PlayRequestHelper(), new PlayPublicKeyStore(), AC.baseUrl);
  12. @Override
  13. public Result call(Http.Context context) throws Throwable
  14. {
  15. try
  16. {
  17. AC.setAcHost(validator.validate(context.request()));
  18. AC.refreshToken(false);
  19. return delegate.call(context);
  20. }
  21. catch (UnknownAcHostException e)
  22. {
  23. return badRequest("Unknown host for consumer key: " + e.getConsumerKey());
  24. }
  25. catch (InvalidOAuthRequestException e)
  26. {
  27. return badRequest("Bad request: " + e.getMessage());
  28. }
  29. catch (UnauthorisedOAuthRequestException e)
  30. {
  31. return unauthorized("Unauthorised: " + e.getMessage());
  32. }
  33. }
  34. private static final class PlayPublicKeyStore implements PublicKeyStore
  35. {
  36. public String getPublicKey(String consumerKey)
  37. {
  38. return AC.getAcHost(consumerKey).map(new Function<AcHost, String>()
  39. {
  40. @Override
  41. public String apply(AcHost host)
  42. {
  43. return host.getPublicKey();
  44. }
  45. }).getOrNull();
  46. }
  47. }
  48. }