#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Pastikan 6 artikel vertikal benar-benar `publish` (bukan `future`), lalu cek HTTP 200 dari luar."""
import base64, json, subprocess, time, urllib.request, urllib.error
from datetime import datetime, timedelta, timezone

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
WIB = timezone(timedelta(hours=7))
IDS = [9195, 9196, 9197, 9198, 9199, 9200]


def api(path, method="GET", data=None):
    h = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}
    body = json.dumps(data).encode() if data is not None else None
    if data is not None:
        h["Content-Type"] = "application/json"
    r = urllib.request.Request(S + path, data=body, headers=h, method=method)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=180) as x:
                return x.status, json.loads(x.read())
        except urllib.error.HTTPError as e:
            return e.code, e.read().decode()[:200]
        except Exception:
            time.sleep(4)
    return 0, "gagal"


now = datetime.now(WIB).replace(microsecond=0)
for pid in IDS:
    st, c = api(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=status,date,slug,link")
    if c.get("status") != "publish":
        st2, _ = api(f"/wp-json/wp/v2/posts/{pid}", "POST",
                     {"status": "publish", "date": now.strftime("%Y-%m-%dT%H:%M:%S")})
        time.sleep(2)
        st3, c = api(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=status,date,slug,link")
        print(f"#{pid} dipaksa publish (PUT {st2}) → {c.get('status')} {c.get('date')}")
    else:
        print(f"#{pid} sudah publish {c.get('date')}")
    print("   ", c.get("link"))

print("\n=== cek HTTP dari luar ===")
slugs = ["seo-untuk-bisnis-properti", "insight-media-sosial-bisnis-properti",
         "analitik-digital-bisnis-properti", "data-marketing-bisnis-properti",
         "digital-marketing-bisnis-retail", "digital-marketing-bisnis-keuangan"]
for s in slugs:
    u = f"https://studiosoft.id/{s}/"
    code = subprocess.run(["curl", "-s", "-4", "-o", "/dev/null", "-w", "%{http_code}", "--http1.1",
                           "--max-time", "90", u], capture_output=True, text=True).stdout
    print(code, u)
