30 lines
874 B
Python
30 lines
874 B
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""Observable data loader: fetches a single token event by ID."""
|
||
|
|
import json
|
||
|
|
import os
|
||
|
|
import sys
|
||
|
|
import urllib.request
|
||
|
|
import urllib.error
|
||
|
|
|
||
|
|
API_BASE = os.environ.get("API_BASE", "http://127.0.0.1:8000").rstrip("/")
|
||
|
|
|
||
|
|
event_id = sys.argv[1] if len(sys.argv) > 1 else ""
|
||
|
|
|
||
|
|
if not event_id:
|
||
|
|
print(json.dumps({"error": "No event ID provided"}))
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
try:
|
||
|
|
with urllib.request.urlopen(f"{API_BASE}/token-events/{event_id}", timeout=10) as resp:
|
||
|
|
data = json.loads(resp.read())
|
||
|
|
print(json.dumps(data))
|
||
|
|
except urllib.error.HTTPError as e:
|
||
|
|
if e.code == 404:
|
||
|
|
print(json.dumps({"error": f"Token event {event_id!r} not found"}))
|
||
|
|
sys.exit(1)
|
||
|
|
print(json.dumps({"error": f"HTTP {e.code}: {e.reason}"}))
|
||
|
|
sys.exit(1)
|
||
|
|
except urllib.error.URLError as e:
|
||
|
|
print(json.dumps({"error": str(e)}))
|
||
|
|
sys.exit(1)
|