Created
September 28, 2021 15:48
-
-
Save BobDotCom/24a096affa497f5be428b1781c717650 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from typing import Optional | |
from werkzeug.serving import make_server | |
import threading | |
from flask import Flask, request, current_app | |
import logging | |
logging.basicConfig(level=0, format="%(asctime)s [%(levelname)s] (%(name)s): %(message)s") | |
logger = logging.getLogger(__name__) | |
app = Flask(__name__) | |
@app.route("/") | |
def recieve_code(): | |
current_app.auth_code = request.args['code'] | |
return "Authorized. Please close this tab." | |
@app.after_request | |
def response_processor(response): | |
@response.call_on_close | |
def process_after_request(): | |
stop_server() | |
return response | |
class ServerThread(threading.Thread): | |
def __init__(self, app): | |
threading.Thread.__init__(self) | |
self.srv = make_server('127.0.0.1', 5000, app) | |
self.ctx = app.app_context() | |
self.ctx.push() | |
def run(self): | |
logger.info('Starting up webserver') | |
self.srv.serve_forever() | |
def shutdown(self): | |
self.srv.shutdown() | |
server: Optional[ServerThread] = None | |
def start_server(): | |
global server | |
server = ServerThread(app) | |
server.start() | |
logger.info('Webserver started up') | |
def stop_server(): | |
logger.info('Webserver shutting down') | |
global server | |
server.shutdown() | |
logger.info('Webserver shut down') | |
if __name__ == "__main__": | |
start_server() | |
""" OUTPUT | |
% python3 webserver.py | |
2021-09-28 10:45:28,821 [INFO] (__main__): Starting up webserver | |
2021-09-28 10:45:28,821 [INFO] (__main__): Webserver started up | |
2021-09-28 10:45:31,493 [INFO] (werkzeug): 127.0.0.1 - - [28/Sep/2021 10:45:31] "GET /?code=asdf HTTP/1.1" 200 - | |
2021-09-28 10:45:31,498 [INFO] (__main__): Webserver shutting down | |
""" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment