-
Notifications
You must be signed in to change notification settings - Fork 0
/
oauth_helpers.py
71 lines (50 loc) · 1.95 KB
/
oauth_helpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from oauthlib.oauth2 import BackendApplicationClient
from requests.adapters import HTTPAdapter
from requests_oauthlib import OAuth2Session
from urllib3 import Retry
from constants import TAPI_ROOT_URL, TAPI_CLIENT_ID, TAPI_CLIENT_SECRET
def get_client(client_id, scope=None):
session = OAuth2Session(client=BackendApplicationClient(client_id=client_id), scope=scope)
retry = Retry(
connect=2,
backoff_factor=1,
status_forcelist=(500, 502, 504),
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('https://', adapter)
return session
def get_token(client, client_secret, scope):
token_url = f"{TAPI_ROOT_URL}o/token/"
return client.fetch_token(
token_url=token_url,
client_id=client.client_id,
client_secret=client_secret,
scope=scope
)
def get_client_with_token(client_id, client_secret, scope=None):
client = get_client(client_id, scope)
get_token(client, client_secret, scope)
return client
oauth_client = get_client_with_token(
client_id=TAPI_CLIENT_ID,
client_secret=TAPI_CLIENT_SECRET
)
def post_with_client(url, data):
return oauth_client.post(url, json=data)
def get_with_client(url):
return oauth_client.get(url)
def delete_with_client(url, id):
id_url = url + id
return oauth_client.delete(id_url)
"""
Copyright 2019 Hendrik Grondijs, Alex Olieman <alex@olieman.net>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""