import httpx from fooder.exc import CaptchaFailed from fooder.settings import settings async def verify_turnstile(token: str, ip: str | None = None) -> None: data = {"secret": settings.TURNSTILE_SECRET_KEY, "response": token} if ip: data["remoteip"] = ip async with httpx.AsyncClient() as client: r = await client.post( "https://challenges.cloudflare.com/turnstile/v0/siteverify", data=data, ) if not r.json().get("success"): raise CaptchaFailed()