From 655d9dc5308da72bca1d8bb4415583ecd5ec3199 Mon Sep 17 00:00:00 2001 From: Hay1tsme Date: Sat, 18 Feb 2023 23:12:40 -0500 Subject: [PATCH] simplified main dispatcher --- core/allnet.py | 6 +++--- core/mucha.py | 4 ++-- index.py | 36 +++++++++--------------------------- 3 files changed, 14 insertions(+), 32 deletions(-) diff --git a/core/allnet.py b/core/allnet.py index 9e69c0e..de0d20c 100644 --- a/core/allnet.py +++ b/core/allnet.py @@ -92,7 +92,7 @@ class AllnetServlet: self.uri_registry[code] = (uri, host) self.logger.info(f"Allnet serving {len(self.uri_registry)} games on port {core_cfg.allnet.port}") - def handle_poweron(self, request: Request): + def handle_poweron(self, request: Request, _: Dict): request_ip = request.getClientAddress().host try: req = AllnetPowerOnRequest(self.allnet_req_to_dict(request.content.getvalue())) @@ -148,7 +148,7 @@ class AllnetServlet: return self.dict_to_http_form_string([vars(resp)]) - def handle_dlorder(self, request: Request): + def handle_dlorder(self, request: Request, _: Dict): request_ip = request.getClientAddress().host try: req = AllnetDownloadOrderRequest(self.billing_req_to_dict(request.content.getvalue())) @@ -168,7 +168,7 @@ class AllnetServlet: else: # TODO: Actual dlorder response return self.dict_to_http_form_string(vars(resp)) - def handle_billing_request(self, request: Request): + def handle_billing_request(self, request: Request, _: Dict): req_dict = self.billing_req_to_dict(request.content.getvalue()) request_ip = request.getClientAddress() if req_dict is None: diff --git a/core/mucha.py b/core/mucha.py index a861101..312d83f 100644 --- a/core/mucha.py +++ b/core/mucha.py @@ -28,7 +28,7 @@ class MuchaServlet: self.logger.setLevel(logging.INFO) coloredlogs.install(level=logging.INFO, logger=self.logger, fmt=log_fmt_str) - def handle_boardauth(self, request: Request) -> bytes: + def handle_boardauth(self, request: Request, _: Dict) -> bytes: req_dict = self.mucha_preprocess(request.content.getvalue()) if req_dict is None: self.logger.error(f"Error processing mucha request {request.content.getvalue()}") @@ -41,7 +41,7 @@ class MuchaServlet: return self.mucha_postprocess(vars(resp)) - def handle_updatecheck(self, request: Request) -> bytes: + def handle_updatecheck(self, request: Request, _: Dict) -> bytes: req_dict = self.mucha_preprocess(request.content.getvalue()) if req_dict is None: self.logger.error(f"Error processing mucha request {request.content.getvalue()}") diff --git a/index.py b/index.py index 7fae586..0049427 100644 --- a/index.py +++ b/index.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import argparse +from typing import Dict import yaml from os import path, mkdir, access, W_OK from core import * @@ -36,46 +37,27 @@ class HttpDispatcher(resource.Resource): if test is None: return b"" - controller = getattr(self, test["controller"], None) - if controller is None: - return b"" - - handler = getattr(controller, test["action"], None) - if handler is None: - return b"" - - url_vars = test - url_vars.pop("controller") - url_vars.pop("action") - - if len(url_vars) > 0: - ret = handler(request, url_vars) - else: - ret = handler(request) - - if type(ret) == str: - return ret.encode() - elif type(ret) == bytes: - return ret - else: - return b"" + return self.dispatch(test, request) def render_POST(self, request: Request) -> bytes: test = self.map_post.match(request.uri.decode()) if test is None: return b"" + + return self.dispatch(test, request) - controller = getattr(self, test["controller"], None) + def dispatch(self, matcher: Dict, request: Request) -> bytes: + controller = getattr(self, matcher["controller"], None) if controller is None: return b"" - handler = getattr(controller, test["action"], None) + handler = getattr(controller, matcher["action"], None) if handler is None: return b"" - url_vars = test + url_vars = matcher url_vars.pop("controller") - url_vars.pop("action") + url_vars.pop("action") ret = handler(request, url_vars) if type(ret) == str: