#!/usr/bin/env python3
import json
import os
import sys
import urllib.error
import urllib.request


BASE_URL = os.getenv("CHAT_API_BASE_URL", "http://127.0.0.1:8000")
API_KEY = os.getenv("INTERNAL_API_KEY")
MESSAGE = os.getenv(
    "SMOKE_TEST_MESSAGE",
    "Explique de forma breve o que e seguro fianca para aluguel.",
)


def request_json(url, *, method="GET", data=None, headers=None, timeout=60):
    request = urllib.request.Request(
        url,
        data=data,
        headers=headers or {},
        method=method,
    )
    with urllib.request.urlopen(request, timeout=timeout) as response:
        body = response.read().decode("utf-8")
        return response.status, json.loads(body)


def main():
    if not API_KEY:
        print("Missing INTERNAL_API_KEY in environment.", file=sys.stderr)
        return 1

    try:
        health_status, health_body = request_json(f"{BASE_URL}/api/v1/health/")
        print("Health:", health_status, json.dumps(health_body, ensure_ascii=False))

        payload = json.dumps({"message": MESSAGE}).encode("utf-8")
        chat_status, chat_body = request_json(
            f"{BASE_URL}/api/v1/chat/messages/",
            method="POST",
            data=payload,
            headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {API_KEY}",
            },
        )
        print("Chat:", chat_status, json.dumps(chat_body, ensure_ascii=False))
        return 0
    except urllib.error.HTTPError as exc:
        error_body = exc.read().decode("utf-8", errors="replace")
        print(f"HTTP error: {exc.code} {error_body}", file=sys.stderr)
        return 1
    except urllib.error.URLError as exc:
        print(f"Connection error: {exc.reason}", file=sys.stderr)
        return 1


if __name__ == "__main__":
    raise SystemExit(main())
