diff options
Diffstat (limited to 'arthur/apis/cloudflare/zones.py')
-rw-r--r-- | arthur/apis/cloudflare/zones.py | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/arthur/apis/cloudflare/zones.py b/arthur/apis/cloudflare/zones.py index 48714a6..93c29d1 100644 --- a/arthur/apis/cloudflare/zones.py +++ b/arthur/apis/cloudflare/zones.py @@ -1,10 +1,36 @@ +from typing import Optional + import aiohttp -async def purge_zone(zone_identifier: str, api_token: str) -> dict: +from arthur.config import CONFIG + + +CF_TOKEN = CONFIG.cloudflare_token + +async def list_zones(zone_name: Optional[str] = None) -> dict[str, str]: + + endpoint = f"https://api.cloudflare.com/client/v4/zones" + request_headers = { + "X-Auth-User-Service-Key": CF_TOKEN + } + + if zone_name is not None: + endpoint += f"?name={zone_name}" + + async with aiohttp.ClientSession() as session: + async with session.post(endpoint, headers=request_headers) as response: + info = await response.json() + + zones = info["result"] + + return {zone.name: zone.id for zone in zones} + + +async def purge_zone(zone_identifier: str) -> dict: endpoint = f"https://api.cloudflare.com/client/v4/zones/{zone_identifier}/purge_cache?purge_everything=true" request_headers = { - "X-Auth-User-Service-Key": api_token + "X-Auth-User-Service-Key": CF_TOKEN } async with aiohttp.ClientSession() as session: @@ -13,7 +39,6 @@ async def purge_zone(zone_identifier: str, api_token: str) -> dict: return { "success": info["success"], - "errors": info["errors"], - "messages": info["messages"] + "errors": info["errors"] } |