]> projects.mako.cc - twitter-api-cdsw-solutions/blob - requests_oauthlib/oauth2_auth.py
Updated packages and code to python3. Won't work with python 2
[twitter-api-cdsw-solutions] / requests_oauthlib / oauth2_auth.py
1 from __future__ import unicode_literals
2 from oauthlib.oauth2 import WebApplicationClient, InsecureTransportError
3 from oauthlib.oauth2 import is_secure_transport
4
5
6 class OAuth2(object):
7     """Adds proof of authorization (OAuth2 token) to the request."""
8
9     def __init__(self, client_id=None, client=None, token=None):
10         """Construct a new OAuth 2 authorization object.
11
12         :param client_id: Client id obtained during registration
13         :param client: :class:`oauthlib.oauth2.Client` to be used. Default is
14                        WebApplicationClient which is useful for any
15                        hosted application but not mobile or desktop.
16         :param token: Token dictionary, must include access_token
17                       and token_type.
18         """
19         self._client = client or WebApplicationClient(client_id, token=token)
20         if token:
21             for k, v in token.items():
22                 setattr(self._client, k, v)
23
24     def __call__(self, r):
25         """Append an OAuth 2 token to the request.
26
27         Note that currently HTTPS is required for all requests. There may be
28         a token type that allows for plain HTTP in the future and then this
29         should be updated to allow plain HTTP on a white list basis.
30         """
31         if not is_secure_transport(r.url):
32             raise InsecureTransportError()
33         r.url, r.headers, r.body = self._client.add_token(r.url,
34                 http_method=r.method, body=r.body, headers=r.headers)
35         return r

Benjamin Mako Hill || Want to submit a patch?