implement batch api

master
wlt233 7 months ago
parent 42d1fdffc4
commit da02f3e69f

@ -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")

@ -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

@ -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):
@ -88,3 +89,40 @@ async def lbonus_execute(request: Request):
}
return lbonus_resp
@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 {}
Loading…
Cancel
Save