#!/usr/bin/env python3
"""Uji API Otterly: health check, lalu ambil spesifikasi endpoint, lalu coba beberapa endpoint data."""
import json, re, urllib.error, urllib.request

KUNCI = json.load(open("/home/mantapman/.hermes/profiles/atun/workspace/.otterly_token.json"))["key"]
BASE = "https://api.otterly.ai"
H = {"Authorization": f"Bearer {KUNCI}", "Accept": "application/json", "User-Agent": "Mozilla/5.0"}


def panggil(u, timeout=90):
    try:
        r = urllib.request.urlopen(urllib.request.Request(u, headers=H), timeout=timeout)
        return r.status, r.read().decode("utf-8", "replace")
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode("utf-8", "replace")[:200]
    except Exception as e:
        return 0, str(e)[:80]


print("=== 1. health check ===")
st, isi = panggil(f"{BASE}/v1/health")
print(f"   status {st} | {isi[:250]}")

print("\n=== 2. daftar endpoint (spesifikasi) ===")
st2, spec_raw = panggil(f"{BASE}/v1/openapi")
endpoint = []
if st2 == 200 and spec_raw.strip().startswith("{"):
    try:
        spec = json.loads(spec_raw)
        print("   judul:", spec.get("info", {}).get("title"), "| versi:", spec.get("info", {}).get("version"))
        for jalur, metode in (spec.get("paths") or {}).items():
            for m in metode:
                if m in ("get", "post"):
                    endpoint.append((m.upper(), jalur, str(metode[m].get("summary") or "")[:70]))
        print(f"   total endpoint: {len(endpoint)}")
        for m, j, s in endpoint[:25]:
            print(f"      {m:<5} {j:<44} {s}")
    except Exception as e:
        print("   (spec tidak terbaca)", str(e)[:80], spec_raw[:150])
else:
    print(f"   status {st2} | {spec_raw[:200]}")

print("\n=== 3. coba beberapa endpoint data ===")
for jalur in ("/v1/workspaces", "/v1/projects", "/v1/prompts", "/v1/brands", "/v1/reports", "/v1/me"):
    st3, isi3 = panggil(f"{BASE}{jalur}", timeout=60)
    print(f"   {st3} | {jalur:<20} | {isi3[:150]}")

json.dump({"endpoint": endpoint}, open("/home/mantapman/.hermes/profiles/atun/workspace/drafts/otterly_endpoint.json", "w"),
          indent=1, ensure_ascii=False)
