ovos-backend-manager/ovos_backend_manager/app.py
2023-04-08 00:50:24 +01:00

53 lines
1.5 KiB
Python

import os
import requests
from flask import Flask, request
from oauthlib.oauth2 import WebApplicationClient
from ovos_backend_manager.configuration import DB
from pywebio.platform.flask import webio_view
from ovos_backend_manager.menu import start
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
app = Flask(__name__)
# `task_func` is PyWebIO task function
app.add_url_rule('/', 'webio_view', webio_view(start),
methods=['GET', 'POST', 'OPTIONS']) # need GET,POST and OPTIONS methods
@app.route("/auth/callback/<oauth_id>", methods=['GET'])
def oauth_callback(oauth_id):
""" user completed oauth, save token to db """
params = dict(request.args)
code = params["code"]
data = DB.get_oauth_app(oauth_id)
client_id = data["client_id"]
client_secret = data["client_secret"]
token_endpoint = data["token_endpoint"]
# Prepare and send a request to get tokens! Yay tokens!
client = WebApplicationClient(client_id)
token_url, headers, body = client.prepare_token_request(
token_endpoint,
authorization_response=request.url,
redirect_url=request.base_url,
code=code
)
token_response = requests.post(
token_url,
headers=headers,
data=body,
auth=(client_id, client_secret),
).json()
DB.add_oauth_token(oauth_id, token_response)
return params
def main(port=36535, debug=False):
app.run(host="0.0.0.0", port=port, debug=debug)
# start_server(app, port=port, debug=debug)