+from .request_validator import PistonRequestValidator
+
+
+class OAuth1RequestTokenEndpoint(RequestTokenEndpoint):
+ def _create_request(self, *args, **kwargs):
+ r = super(OAuth1RequestTokenEndpoint, self)._create_request(*args, **kwargs)
+ r.redirect_uri = 'oob'
+ return r
+
+ def create_request_token(self, request, credentials):
+ token = {
+ 'oauth_token': self.token_generator()[:KEY_SIZE],
+ 'oauth_token_secret': self.token_generator()[:SECRET_SIZE],
+ }
+ token.update(credentials)
+ self.request_validator.save_request_token(token, request)
+ return urlencode(token.items())
+
+
+class OAuth1RequestTokenView(APIView):
+ def __init__(self):
+ self.endpoint = OAuth1RequestTokenEndpoint(PistonRequestValidator())
+ def dispatch(self, request):
+ headers, body, status = self.endpoint.create_request_token_response(
+ request.build_absolute_uri(),
+ request.method,
+ request.body,
+ {
+ "Authorization": request.META['HTTP_AUTHORIZATION']
+ } if 'HTTP_AUTHORIZATION' in request.META else None
+ )
+
+ response = HttpResponse(body, status=status)
+ for k, v in headers.items():
+ response[k] = v
+ return response