"""Python 3.10+, biblioteca padrão. Execute somente no servidor."""
import json
import os
import re
import sys
import urllib.error
import urllib.request

key = os.environ.get("PIX_API_KEY", "")
sale_id = os.environ.get("PIX_SALE_ID", "")
operation = sys.argv[1] if len(sys.argv) == 2 else ""
if not key or not re.fullmatch(r"[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{21}", sale_id):
    sys.exit("Configure PIX_API_KEY e PIX_SALE_ID (21 caracteres Crockford).")
if operation not in ("create", "get"):
    sys.exit("Use: python sale.py create|get")

# Persista ID e corpo antes do POST; preserve ambos em toda retentativa.
body = {"sale_id": sale_id, "amount_cents": 8990, "reference": "Pedido 1042"}
url = "https://pixlojista.com.br/v1/integration/sales"
request = urllib.request.Request(
    url if operation == "create" else f"{url}/{sale_id}",
    method="POST" if operation == "create" else "GET",
    headers={"Authorization": f"Bearer {key}", "Content-Type": "application/json"},
    data=json.dumps(body).encode() if operation == "create" else None,
)

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

try:
    with urllib.request.build_opener(NoRedirect()).open(request, timeout=15) as response:
        print(json.dumps(json.load(response), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as error:
    sys.exit(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}")
