#!/usr/bin/env python3
"""Cek kondisi TSLaw: daftar post terbaru (publish/future/draft) + kategori/tag base."""
import base64, json, urllib.request, urllib.error

DOM = "tslaw.id"
USER, PASS = "bambangbot", "EFKm EYGx VQCP Y9go ncPr uM2Y"
AUTH = base64.b64encode(f"{USER}:{PASS}".encode()).decode()
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def rest(path):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    r = urllib.request.Request(f"https://{DOM}{path}", headers=h)
    try:
        with urllib.request.urlopen(r, timeout=120) as x:
            return x.status, json.loads(x.read())
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode()[:200]


st, posts = rest("/wp-json/wp/v2/posts?status=publish,future,draft&per_page=30&orderby=date&order=desc"
                 "&_fields=id,slug,status,date,title")
print(f"post terbaru (HTTP {st}): {len(posts) if isinstance(posts, list) else posts}")
if isinstance(posts, list):
    for p in posts:
        t = p["title"]["rendered"] if isinstance(p["title"], dict) else p["title"]
        print(f"  #{p['id']:>5} {p['status']:<8} {p['date'][:10]} {p['slug'][:52]:<52} {t[:44]}")

st, s = rest("/wp-json/")
print(f"\nzona waktu situs: {s.get('timezone_string') if isinstance(s, dict) else s}")

st, kats = rest("/wp-json/wp/v2/categories?per_page=100&_fields=id,name,count")
if isinstance(kats, list):
    for k in kats:
        if k["id"] == 14:
            print(f"kategori 14 = {k['name']} ({k['count']} artikel)")

st, tags = rest("/wp-json/wp/v2/tags?search=kecelakaan&per_page=20&_fields=id,name,slug,count")
print(f"tag cari 'kecelakaan': {tags if isinstance(tags, list) else str(tags)[:120]}")
for q in ["lalu lintas", "ganti rugi", "asuransi", "kecelakaan lalu lintas", "jasa raharja"]:
    st, t = rest(f"/wp-json/wp/v2/tags?search={urllib.parse.quote(q)}&per_page=10&_fields=id,name,slug,count")
    print(f"  tag '{q}': {[(x['id'], x['name'], x['count']) for x in t] if isinstance(t, list) else str(t)[:80]}")

# plugin & user (kesehatan keamanan singkat)
st, pl = rest("/wp-json/wp/v2/plugins?per_page=100&_fields=plugin,name,status")
print(f"\nplugin aktif: {[p['name'] for p in pl if p.get('status') == 'active'] if isinstance(pl, list) else str(pl)[:100]}")
