From da02f3e69f848a21c871fa4cea240c308312ec16 Mon Sep 17 00:00:00 2001 From: wlt233 <1486185683@qq.com> Date: Thu, 8 Aug 2024 12:34:40 +0800 Subject: [PATCH] implement batch api --- sif/__init__.py | 2 ++ sif/api.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ sif/misc.py | 40 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 sif/api.py diff --git a/sif/__init__.py b/sif/__init__.py index b6d4b30..b3f8bbd 100644 --- a/sif/__init__.py +++ b/sif/__init__.py @@ -4,10 +4,12 @@ from .login import bp_sif_login from .user import bp_sif_user from .misc import bp_sif_misc from .download import bp_sif_download +from .api import bp_sif_api bp_sif = Blueprint.group(bp_sif_login, bp_sif_user, bp_sif_misc, bp_sif_download, + bp_sif_api, url_prefix="main.php") diff --git a/sif/api.py b/sif/api.py new file mode 100644 index 0000000..d5eb17d --- /dev/null +++ b/sif/api.py @@ -0,0 +1,44 @@ +from sanic import Blueprint, Request, json, Sanic +from sanic.log import logger + +import time + +from .common import common_api + + + +bp_sif_api = Blueprint("sif_api") + + + +@bp_sif_api.route("/api", methods=["POST"]) +@common_api +async def api(request: Request): + api_list = request.ctx.request_data + logger.debug(f"{api_list=}") + + api_resp = [] + route_dict = {} + for route in Sanic.get_app().router.routes: + route_dict[route.path] = route.handler + + for api_request in api_list: + module, action = api_request["module"], api_request["action"] + handler = route_dict.get(f"main.php/{module}/{action}", None) + if handler: + result = await handler.__wrapped__(request) + logger.debug(f"api:main.php/{module}/{action} {result=}") + else: + logger.error(f"api:main.php/{module}/{action} not found") + result = {} + api_resp.append({ + "commandNum": False, + "result": result, + "status": 200, + "timeStamp": int(time.time()) + }) + + return api_resp + + + diff --git a/sif/misc.py b/sif/misc.py index cdebe3c..d6ee155 100644 --- a/sif/misc.py +++ b/sif/misc.py @@ -21,6 +21,7 @@ async def gdpr_get(request: Request): return gdpr_resp + @bp_sif_misc.route("/lbonus/execute", methods=["POST"]) @common_api async def lbonus_execute(request: Request): @@ -87,4 +88,41 @@ async def lbonus_execute(request: Request): "present_cnt": 0, } return lbonus_resp - \ No newline at end of file + + + +@bp_sif_misc.route("/personalnotice/get", methods=["POST"]) +@common_api +async def personalnotice_get(request: Request): + notice_resp = { + "has_notice": False, + "notice_id": 0, + "type": 0, + "title": "", + "contents": "", + "server_timestamp": int(time.time()), + } + return notice_resp + +@bp_sif_misc.route("/personalnotice/agree", methods=["POST"]) +@common_api +async def personalnotice_agree(request: Request): + return {} + + + +@bp_sif_misc.route("/tos/tosCheck", methods=["POST"]) +@common_api +async def tos_toscheck(request: Request): + notice_resp = { + "tos_id": 1, + "tos_type": 1, + "is_agreed": True, + "server_timestamp": int(time.time()), + } + return notice_resp + +@bp_sif_misc.route("/tos/tosAgree", methods=["POST"]) +@common_api +async def tos_tosagree(request: Request): + return {} \ No newline at end of file