"""Python 3.12+, standard library. At most two records; never prints the key."""
import json
import os
import time
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen
from uuid import uuid4

key = os.environ["RADAR_API_KEY"]
params = {"job_family": "data", "job_subfamily": "data_engineering", "limit": 1}
for page in range(2):
    request = Request("https://api.revenirdata.com/v1/opportunities?" + urlencode(params),
                      headers={"X-API-Key": key, "X-Request-ID": str(uuid4())})
    try:
        with urlopen(request, timeout=30) as response:
            result = json.load(response)
            print(json.dumps({"status": response.status, "request_id": result["meta"]["request_id"],
                              "returned": result["pagination"]["returned"],
                              "ids": [record["id"] for record in result["data"]]}))
    except HTTPError as error:
        print(json.dumps({"status": error.code, "request_id": error.headers.get("x-request-id"),
                          "retry_after": error.headers.get("retry-after")}))
        raise SystemExit(1) from None
    except URLError:
        raise SystemExit("Network failure; check connectivity before a bounded retry.") from None
    cursor = result["pagination"].get("next_cursor")
    if not cursor:
        break
    params["cursor"] = cursor
    time.sleep(1.1)
