generated from coulomb/repo-seed
53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
import urllib.error
|
|
import urllib.request
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser(description="Generate a RecentlyOnScope digest via the State Hub API.")
|
|
parser.add_argument("--domain", required=True, help="Domain slug, for example custodian")
|
|
parser.add_argument("--range", default="1h", help="Time range such as 15m, 1h, 6h, or 1d")
|
|
parser.add_argument("--since", help="Optional ISO timestamp for the start of the window")
|
|
parser.add_argument("--until", help="Optional ISO timestamp for the end of the window")
|
|
parser.add_argument("--api-base", default="http://127.0.0.1:8000", help="State Hub API base URL")
|
|
parser.add_argument("--print-markdown", action="store_true", help="Print the generated Markdown instead of metadata")
|
|
args = parser.parse_args()
|
|
|
|
payload = {"range": args.range}
|
|
if args.since:
|
|
payload["since"] = args.since
|
|
if args.until:
|
|
payload["until"] = args.until
|
|
|
|
url = f"{args.api_base.rstrip('/')}/domains/{args.domain}/recently-on-scope/"
|
|
request = urllib.request.Request(
|
|
url,
|
|
data=json.dumps(payload).encode("utf-8"),
|
|
headers={"Content-Type": "application/json"},
|
|
method="POST",
|
|
)
|
|
try:
|
|
with urllib.request.urlopen(request, timeout=30) as response:
|
|
body = json.loads(response.read().decode("utf-8"))
|
|
except urllib.error.HTTPError as exc:
|
|
detail = exc.read().decode("utf-8")
|
|
print(f"State Hub returned {exc.code}: {detail}", file=sys.stderr)
|
|
return 1
|
|
except urllib.error.URLError as exc:
|
|
print(f"Could not reach State Hub at {args.api_base}: {exc.reason}", file=sys.stderr)
|
|
return 1
|
|
|
|
if args.print_markdown:
|
|
print(body["markdown"])
|
|
else:
|
|
print(json.dumps({key: value for key, value in body.items() if key != "markdown"}, indent=2))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|