"""Send one non-sensitive probe using a server-side Anthropic credential."""
import json
import os
import sys
from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen


def main() -> None:
    key = os.environ["ANTHROPIC_API_KEY"]
    model = os.environ["ANTHROPIC_MODEL"]
    request = Request(
        "https://api.anthropic.com/v1/messages",
        data=json.dumps({"model": model, "max_tokens": 32,
                         "messages": [{"role": "user", "content": "Reply with OK."}]}).encode(),
        headers={"Content-Type": "application/json", "x-api-key": key,
                 "anthropic-version": "2023-06-01"},
        method="POST",
    )
    try:
        with urlopen(request, timeout=30) as response:
            result = json.load(response)
    except HTTPError as error:
        raise SystemExit(f"Provider returned HTTP {error.code}; check the key, model, and quota") from None
    except (URLError, TimeoutError):
        raise SystemExit("Provider connection failed or timed out") from None
    print(json.dumps({"model": result["model"], "usage": result["usage"],
                      "text": [part["text"] for part in result["content"]
                               if part["type"] == "text"]}, indent=2))


if __name__ == "__main__":
    try:
        main()
    except KeyError as error:
        sys.exit(f"Set {error.args[0]} in the process environment before running")
