"""ntfy push notifications (server: 127.0.0.1:2586).""" from __future__ import annotations import httpx from app.config import settings async def send_push( topic: str, title: str, body: str, *, tags: list[str] | None = None, click_url: str = "", ) -> bool: if not settings.ntfy_enabled: return False base = settings.ntfy_url.rstrip("/") url = f"{base}/{topic}" headers: dict[str, str] = {"Title": title} if click_url: headers["Click"] = click_url if tags: headers["Tags"] = ",".join(tags) try: async with httpx.AsyncClient(timeout=8.0) as client: r = await client.post(url, content=body, headers=headers) return r.status_code < 300 except Exception: return False