Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/requests_oauthlib/oauth2_auth.py: 43%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

14 statements  

1from oauthlib.oauth2 import WebApplicationClient, InsecureTransportError 

2from oauthlib.oauth2 import is_secure_transport 

3from requests.auth import AuthBase 

4 

5 

6class OAuth2(AuthBase): 

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( 

34 r.url, http_method=r.method, body=r.body, headers=r.headers 

35 ) 

36 return r