-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
78 lines (56 loc) · 1.98 KB
/
app.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
72
73
74
75
76
77
78
#!/usr/bin/python3
from flask import Flask, redirect, request, jsonify, render_template
import requests
import urllib.parse
app = Flask(__name__)
config = {
'client_id': '',
'client_secret': '',
'redirect_uri': 'http://127.0.0.1:5000/callback',
'api_base_uri': 'https://api.sipgate.com',
'check_ssl': True,
'access_token': None,
'scope': 'all'
}
@app.route('/')
def index():
return render_template('index.html')
@app.route('/login')
def login():
location = config.get('api_base_uri') + '/v1/authorization/oauth/authorize' + '?' + urllib.parse.urlencode(
{'client_id': config.get('client_id'),
'redirect_uri': config.get('redirect_uri'),
'response_type': 'code',
'scope': config.get('scope')})
return redirect(location)
@app.route('/callback')
def callback():
code = request.args.get('code')
if code:
payload = {
'client_id': config.get('client_id'),
'client_secret': config.get('client_secret'),
'code': code,
'grant_type': 'authorization_code',
'redirect_uri': config.get('redirect_uri')
}
r = requests.post(config.get('api_base_uri') + '/v1/authorization/oauth/token',
data=payload, verify=config.get('check_ssl'))
if r.status_code == 200:
response = r.json()
config['access_token'] = response.get('access_token')
return jsonify(response)
return str(r.status_code)
return 'no code'
@app.route('/<get_title>')
def get_request(get_title):
if not config.get('access_token'):
return login()
r = requests.get(config.get('api_base_uri') + '/v1/' + get_title,
headers={'Authorization': 'Bearer ' + config.get('access_token')},
verify=config.get('check_ssl'))
if r.status_code == 200:
return jsonify(r.json())
return str(r.status_code)
if __name__ == '__main__':
app.run(debug=True)