From 45c59713d34444f04b3af67d2e8be5fa5f2436af Mon Sep 17 00:00:00 2001 From: Hykilpikonna Date: Wed, 31 Aug 2022 12:57:25 -0400 Subject: [PATCH] [O] Encapsulate get login code --- mc_auth/auth.py | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/mc_auth/auth.py b/mc_auth/auth.py index 67865a9..16df511 100644 --- a/mc_auth/auth.py +++ b/mc_auth/auth.py @@ -5,13 +5,12 @@ import urllib.parse import webbrowser from http.server import HTTPServer, BaseHTTPRequestHandler from io import StringIO +from threading import Thread import uvicorn from fastapi import FastAPI from ruamel import yaml -app = FastAPI() - def load_config() -> dict: with open('auth_config.yml') as f: @@ -22,19 +21,23 @@ def load_config() -> dict: config = load_config() -@app.get('/') -def callback(code: str): - print('Login code received!') - return 'Login success!' +def get_login_code() -> str: + app = FastAPI() + result = {} + @app.get('/') + def callback(code: str): + print('Login code received!') + result['code'] = code + return 'Login success!' -def run(): - uvicorn.run(app, host="0.0.0.0", port=18275, reload=False) + def run(): + uvicorn.run(app, host="0.0.0.0", port=18275, reload=False) + th = Thread(target=run) + th.start() -if __name__ == '__main__': - _thread.start_new_thread(run, ()) - + # Open url in browser url = "https://login.live.com/oauth20_authorize.srf?" url += urllib.parse.urlencode({ 'client_id': config['ClientID'], @@ -43,6 +46,13 @@ if __name__ == '__main__': 'scope': 'XboxLive.signin offline_access', 'state': 'NOT_NEEDED' }) - webbrowser.open(url) - time.sleep(10000000) + + while 'code' not in result: + time.sleep(0.01) + + return result['code'] + + +if __name__ == '__main__': + print(get_login_code())