pryscraper/routers/webhooks.py
cryptorugmunch 2f1eec2f78
Some checks failed
CI / lint (pull_request) Successful in 33s
CI / typecheck (pull_request) Failing after 1m42s
CI / test (pull_request) Failing after 2m33s
CI / security (pull_request) Failing after 39s
CI / gitleaks (pull_request) Successful in 36s
CI / commitlint (pull_request) Failing after 10s
style: ruff format
2026-07-03 18:12:36 +02:00

47 lines
1.2 KiB
Python

"""Pry — Webhooks router (remaining api.py routes).
Auto-extracted from api.py during the router-split refactor.
"""
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Rug Munch Media LLC
from __future__ import annotations
import logging
from typing import Any
from fastapi import APIRouter, Body
logger = logging.getLogger(__name__)
router = APIRouter(tags=["Webhooks"])
@router.post(
"/v1/webhooks/test",
tags=["Webhooks"],
summary="Test webhook delivery",
)
async def test_webhook(
url: str = Body(...),
payload: dict[str, Any] | None = Body(None),
) -> dict[str, Any]:
"""Test webhook delivery to a URL with HMAC signing."""
from webhook_delivery import WebhookDelivery
w = WebhookDelivery()
return await w.deliver(url, payload or {"test": True, "timestamp": "now"}, "test.event")
@router.get(
"/v1/webhooks/dead-letter",
tags=["Webhooks"],
summary="Get failed webhook deliveries",
)
async def get_dead_letter() -> dict[str, Any]:
"""Get the dead letter queue of failed webhook deliveries."""
from webhook_delivery import WebhookDelivery
w = WebhookDelivery()
return {"success": True, "data": w.retry_dead_letter()}