#!/usr/bin/env python3

import json
import sys
from urllib.error import HTTPError, URLError
from urllib.request import urlopen


API_PATH = "/api/v1/data"
TIMEOUT = 10


def main():
    if len(sys.argv) != 2:
        print("Usage: agent_p1 IP_OR_FQDN", file=sys.stderr)
        sys.exit(1)

    address = sys.argv[1]
    url = f"http://{address}{API_PATH}"

    try:
        with urlopen(url, timeout=TIMEOUT) as response:
            data = json.load(response)

    except HTTPError as exc:
        print(
            f"P1 API HTTP error: {exc.code} {exc.reason}",
            file=sys.stderr,
        )
        sys.exit(1)

    except URLError as exc:
        print(
            f"P1 API connection error: {exc.reason}",
            file=sys.stderr,
        )
        sys.exit(1)

    except TimeoutError:
        print("P1 API request timed out", file=sys.stderr)
        sys.exit(1)

    except json.JSONDecodeError as exc:
        print(
            f"P1 API returned invalid JSON: {exc}",
            file=sys.stderr,
        )
        sys.exit(1)

    print("<<<p1:sep(0)>>>")
    print(json.dumps(data, separators=(",", ":")))


if __name__ == "__main__":
    main()