#!/usr/bin/env python3
"""Simpan token Ahrefs ke berkas (izin 600) dan uji apakah masih aktif."""
import json, os, stat, urllib.parse, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
BERKAS = f"{WS}/.ahrefs_token.json"
TOKEN = "g3yT40cyuufSzNuCcpDZU9sykBxBTGbJ0_CKcpLh"

# 1. simpan (kalau belum ada, atau perbarui bila berbeda)
lama = None
if os.path.exists(BERKAS):
    try:
        lama = json.load(open(BERKAS)).get("token")
    except Exception:
        lama = None
if lama != TOKEN:
    with open(BERKAS, "w") as f:
        json.dump({"token": TOKEN, "disimpan": "2026-10-06", "sumber": "Bos (Telegram)"}, f, indent=1)
    os.chmod(BERKAS, 0o600)
    print(f"   {'diperbarui' if lama else 'disimpan'}: {BERKAS} (izin 600)")
else:
    print("   token sudah tersimpan, tidak berubah")
print(f"   izin berkas: {oct(stat.S_IMODE(os.stat(BERKAS).st_mode))}")

# 2. uji ke API (tanpa mencetak tokennya)
H = {"Authorization": f"Bearer {TOKEN}", "Accept": "application/json"}

UJI = [
    ("batas langganan", "https://api.ahrefs.com/v3/subscription-info/limits-and-usage"),
    ("metrik domain", "https://api.ahrefs.com/v3/site-explorer/metrics?"
                      + urllib.parse.urlencode({"target": "studiosoft.id", "date": "2026-10-01",
                                                "country": "id", "mode": "domain"})),
]
for nama, u in UJI:
    try:
        r = urllib.request.urlopen(urllib.request.Request(u, headers=H), timeout=90)
        d = json.loads(r.read())
        print(f"\n=== {nama}: status {r.status} ===")
        print("   " + json.dumps(d)[:600])
    except urllib.error.HTTPError as e:
        badan = e.read().decode("utf-8", "replace")[:400]
        print(f"\n=== {nama}: HTTP {e.code} ===")
        print("   " + badan)
    except Exception as e:
        print(f"\n=== {nama}: gagal {str(e)[:90]}")
