from typing import Any

from fastapi import APIRouter, BackgroundTasks, Request

from app import schemas
from app.chain.webhook_message import WebhookMessageChain
from app.core.config import settings

router = APIRouter()


def start_webhook_chain(body: Any, form: Any, args: Any):
    """
    启动链式任务
    """
    WebhookMessageChain().process(body=body, form=form, args=args)


@router.post("/", response_model=schemas.Response)
async def webhook_message(background_tasks: BackgroundTasks, token: str, request: Request):
    """
    Webhook响应
    """
    if token != settings.API_TOKEN:
        return {"success": False, "message": "token认证不通过"}
    body = await request.body()
    form = await request.form()
    args = request.query_params
    background_tasks.add_task(start_webhook_chain, body, form, args)
    return {"success": True}
