#!/usr/bin/env python3
"""TSLaw artikel ke-10 (utang piutang): cek sehat situs + cari calon tautan internal."""
import base64, json, time, 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, timeout=90):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    r = urllib.request.Request(f"https://{DOM}{path}", headers=h)
    for i in range(3):
        try:
            with urllib.request.urlopen(r, timeout=timeout) as x:
                return x.status, json.loads(x.read())
        except urllib.error.HTTPError as e:
            return e.code, e.read().decode()[:200]
        except Exception as e:
            print(f"  (ulang {i+1}: {str(e)[:60]})")
            time.sleep(5)
    return 0, "gagal"


# 1. sehat situs
for u in ("https://tslaw.id/", "https://www.tslaw.id/"):
    t0 = time.time()
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=60) as x:
            print(f"{u:<26} {x.status}  {time.time()-t0:.2f}s")
    except urllib.error.HTTPError as e:
        print(f"{u:<26} {e.code}")
    except Exception as e:
        print(f"{u:<26} ERR {str(e)[:60]}")

st, x = rest("/wp-json/wp/v2/posts?per_page=1&_fields=id")
print(f"REST posts      : {st}")

# 2. cari artikel terkait utang/piutang/penagihan/somasi/wanprestasi
kata = ["utang", "piutang", "penagihan", "somasi", "wanprestasi", "pailit", "fidusia",
        "giro", "sengketa", "kontrak", "perjanjian", "hutang"]
print("\n=== ARTIKEL TERKAIT (publish) ===")
lihat = {}
for k in kata:
    st, d = rest(f"/wp-json/wp/v2/posts?search={k}&status=publish&per_page=20&_fields=id,slug,link,title")
    if isinstance(d, list):
        for p in d:
            lihat[p["id"]] = p
for pid in sorted(lihat):
    p = lihat[pid]
    print(f"  #{pid} {p['slug']}")
print(f"  total unik: {len(lihat)}")

# 3. cek kandidat tautan spesifik
kandidat = [
    "https://www.tslaw.id/7-langkah-hukum-menagih-utang-piutang-secara-profesional-tanpa-main-hakim-sendiri/",
    "https://www.tslaw.id/7-hal-penting-tentang-somasi-yang-wajib-dipahami-sebelum-menggugat-ke-pengadilan/",
    "https://www.tslaw.id/3-perbedaan-gugatan-perdata-dan-pidana-yang-perlu-dipahami/",
    "https://www.tslaw.id/6-jenis-surat-kuasa-hukum-dan-fungsinya-yang-wajib-anda-pahami/",
    "https://www.tslaw.id/biaya-jasa-law-firm-surabaya/",
    "https://www.tslaw.id/cara-memilih-law-firm-surabaya-untuk-perusahaan/",
    "https://www.tslaw.id/law-firm-surabaya/",
    "https://www.tslaw.id/layanan/",
    "https://www.tslaw.id/hubungi/",
    "https://www.tslaw.id/tujuh-situasi-perusahaan-butuh-law-firm/",
]
print("\n=== KANDIDAT TAUTAN ===")
for u in kandidat:
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=60) as x:
            print(f"  {x.status}  {u}")
    except urllib.error.HTTPError as e:
        print(f"  {e.code}  {u}")
    except Exception as e:
        print(f"  ERR {str(e)[:40]}  {u}")
