from fastapi import FastAPI, Request, HTTPException
from whatsrb_cloud import WebhookSignature
from app.deps import event_registry
import os
app = FastAPI()
@app.post("/webhooks/whatsrb")
async def handle_webhook(request: Request):
body = await request.body()
signature = request.headers.get("X-Webhook-Signature", "")
timestamp = request.headers.get("X-Webhook-Timestamp")
if not WebhookSignature.verify(
payload=body.decode(),
secret=os.environ["WHATSRB_WEBHOOK_SECRET"],
signature=signature,
timestamp=timestamp,
):
raise HTTPException(status_code=401)
payload = await request.json()
event_registry.dispatch(payload)
return {"ok": True}