#!/usr/bin/env python3
"""Diagnosa: jalur mana yang benar-benar menyimpan meta Yoast di dasindonesia.com?"""
import base64, json, urllib.request, urllib.error

SITE = "https://dasindonesia.com"
AUTH = base64.b64encode(b"bambangbot:u3a1 G2pQ 3SWY f0zI OlGP YAjU").decode()
PID = 5569
UJI_META = "UJI COBA meta DAS — bengkel spesialis alphard surabaya untuk servis dan overhaul mesin mobil premium."
UJI_TITLE = "UJI COBA Judul SEO DAS"


def call(method, path, data=None, extra_headers=None):
    h = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}
    if data is not None:
        h["Content-Type"] = "application/json"
    if extra_headers:
        h.update(extra_headers)
    body = json.dumps(data).encode() if data is not None else None
    r = urllib.request.Request(SITE + path, data=body, headers=h, method=method)
    try:
        with urllib.request.urlopen(r, timeout=120) as x:
            txt = x.read().decode()
            try:
                return x.status, json.loads(txt)
            except Exception:
                return x.status, txt[:200]
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode()[:300]


def keadaan():
    st, j = call("GET", f"/wp-json/wp/v2/posts/{PID}?context=edit&_fields=meta")
    m = j.get("meta", {}) if isinstance(j, dict) else {}
    return m.get("_yoast_wpseo_metadesc", ""), m.get("_yoast_wpseo_title", "")


print("sebelum :", keadaan()[0][:60], "|", keadaan()[1][:40])

uji = [
    ("POST tanpa context", "POST", f"/wp-json/wp/v2/posts/{PID}",
     {"meta": {"_yoast_wpseo_metadesc": UJI_META, "_yoast_wpseo_title": UJI_TITLE}}),
    ("POST ?context=edit", "POST", f"/wp-json/wp/v2/posts/{PID}?context=edit",
     {"meta": {"_yoast_wpseo_metadesc": UJI_META, "_yoast_wpseo_title": UJI_TITLE}}),
    ("PUT ?context=edit", "PUT", f"/wp-json/wp/v2/posts/{PID}?context=edit",
     {"meta": {"_yoast_wpseo_metadesc": UJI_META, "_yoast_wpseo_title": UJI_TITLE}}),
    ("POST meta/_yoast.. langsung", "POST", f"/wp-json/wp/v2/posts/{PID}?context=edit",
     {"_yoast_wpseo_metadesc": UJI_META, "_yoast_wpseo_title": UJI_TITLE}),
    ("Yoast bulk_editor/update_search", "POST", "/wp-json/yoast/v1/bulk_editor/update_search",
     {"items": [{"id": PID, "meta_description": UJI_META, "seo_title": UJI_TITLE}]}),
]

for nama, method, path, data in uji:
    st, res = call(method, path, data)
    md, tt = keadaan()
    sukses = md == UJI_META
    print(f"{nama:<34} HTTP {st} | tersimpan: {'YA' if sukses else 'tidak'} | meta sekarang: {md[:45]}")
    if sukses:
        print("   >>> jalur ini yang benar")
        break
