pointapi/routers/point.py
2021-04-02 01:27:37 +08:00

29 lines
892 B
Python

import asyncio
from fastapi import APIRouter, Request
from common import *
from models import DataModel
router = APIRouter()
@router.post("/point/")
async def point(request: Request, items: DataModel):
public_data = restore_field(items.public)
rdb = request.app.state.redis
data_factory = request.app.state.data_factory
output_factory = request.app.state.output_factory
for item in items.data:
data = restore_field(item)
sign = data.pop('sign')
if not check_sign(sign, public_data, data):
return {"code": -1, 'msg': '签名错误'}
single_data = public_data | data
await asyncio.gather(
*map(lambda o: asyncio.create_task(o(request, rdb, single_data)), data_factory.handler_link))
msg = data_factory.format_data(single_data)
output_factory.send(msg)
return {"code": 0, 'msg': 'ok'}