import httpx from .config import AppConfig async def list_domains(config: AppConfig) -> list[dict]: """Cloudflare API로 zone 목록 조회.""" headers = { "Authorization": f"Bearer {config.cloudflare_api_token}", "Content-Type": "application/json", } zones = [] page = 1 async with httpx.AsyncClient(timeout=30) as client: while True: resp = await client.get( "https://api.cloudflare.com/client/v4/zones", headers=headers, params={"page": page, "per_page": 50}, ) resp.raise_for_status() data = resp.json() for zone in data["result"]: zones.append({ "id": zone["id"], "name": zone["name"], "status": zone["status"], }) info = data.get("result_info", {}) if page >= info.get("total_pages", 1): break page += 1 return zones