"""Example HTTP helper; uses an existing Arenza Personal Access Token with write scope.""" import json import os import urllib.error import urllib.request def send_event(event: dict, delivery_id: str) -> dict: install_id = os.environ["ARENZA_INSTALL_ID"] api_key = os.environ["ARENZA_API_KEY"] body = json.dumps(event, separators=(",", ":"), sort_keys=True).encode("utf-8") request = urllib.request.Request( f"https://api.arenza.ai/api/v1/billing-events/{install_id}", data=body, method="POST", headers={ "Content-Type": "application/json", "Authorization": f"Bearer {api_key}", "webhook-id": delivery_id, }, ) try: with urllib.request.urlopen(request, timeout=10) as response: if response.status != 202: raise RuntimeError(f"Arenza returned HTTP {response.status}") receipt = json.load(response) except urllib.error.HTTPError as error: raise RuntimeError(f"Arenza returned HTTP {error.code}") from error if receipt.get("accepted") is not True or not receipt.get("receipt_id"): raise RuntimeError("Invalid Arenza receipt") return receipt