"""Exemplo do capítulo 26: lê três regiões da API pública do War Era."""

import json
from urllib.request import Request, urlopen
from urllib.parse import urlencode

# Endereço base das operações públicas do War Era.
base = "https://api2.warera.io/trpc/"
# Esta operação não precisa de filtros: enviamos um objeto vazio em "input".
params = urlencode({"input": json.dumps({})})
url = base + "region.getRegionsObject?" + params
# Os cabeçalhos informam navegador e origem; não fazem login na conta.
request = Request(url, headers={
    "User-Agent": "Mozilla/5.0",
    "Origin": "https://app.warera.io",
    "Referer": "https://app.warera.io/",
})

# Faz a consulta e lê o JSON; os dados ficam dentro de "result.data".
with urlopen(request, timeout=15) as response:
    regions = json.load(response)["result"]["data"]

# Mostra o total recebido e apenas três regiões para não lotar o terminal.
print(f"A API devolveu {len(regions)} regiões.")
for region_id, region in list(regions.items())[:3]:
    print(region_id, region["name"], region["climate"])
