#!/usr/bin/env python3
"""DAS: cek apakah event click_whatsapp / klik_wa pernah tercatat di GA4 (90 hari + waktu nyata)."""
import json, urllib.request, urllib.error

TOKEN = "/home/mantapman/.hermes/profiles/suwarno/workspace/seo-oauth/google_token_seo.json"
GA4 = "properties/443064659"
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request
c = Credentials.from_authorized_user_file(TOKEN, ["https://www.googleapis.com/auth/analytics.readonly"])
if not c.valid:
    c.refresh(Request()); open(TOKEN, "w").write(c.to_json())
H = {"Authorization": f"Bearer {c.token}", "Content-Type": "application/json"}


def tanya(url, isi):
    r = urllib.request.Request(url, data=json.dumps(isi).encode(), headers=H)
    try:
        with urllib.request.urlopen(r, timeout=150) as x:
            return json.loads(x.read())
    except urllib.error.HTTPError as e:
        return {"err": e.code, "pesan": e.read().decode()[:200]}
    except Exception as e:
        return {"err": str(e)[:120]}


print("=== 1. semua nama event 90 hari (yang mengandung 'whats' / 'wa' / 'klik') ===")
d = tanya(f"https://analyticsdata.googleapis.com/v1beta/{GA4}:runReport",
          {"dateRanges": [{"startDate": "90daysAgo", "endDate": "today"}],
           "dimensions": [{"name": "eventName"}], "metrics": [{"name": "eventCount"}],
           "limit": 250, "orderBys": [{"metric": {"metricName": "eventCount"}, "desc": True}]})
if "err" in d:
    print("   gagal:", d)
else:
    for r in d.get("rows", []):
        nama = r["dimensionValues"][0]["value"]
        n = r["metricValues"][0]["value"]
        tanda = "  ←" if any(t in nama.lower() for t in ("whats", "klik", "wa", "click")) else ""
        if tanda or int(n) > 5:
            print(f"   {n:>6}x {nama}{tanda}")
    print(f"   (total nama event: {len(d.get('rows', []))})")

print("\n=== 2. khusus click_whatsapp & klik_wa (90 hari) ===")
for nama in ("click_whatsapp", "klik_wa"):
    d = tanya(f"https://analyticsdata.googleapis.com/v1beta/{GA4}:runReport",
              {"dateRanges": [{"startDate": "90daysAgo", "endDate": "today"}],
               "dimensions": [{"name": "eventName"}], "metrics": [{"name": "eventCount"}],
               "dimensionFilter": {"filter": {"fieldName": "eventName", "stringFilter": {"value": nama}}}})
    rows = d.get("rows", []) if "err" not in d else []
    print(f"   {nama:<18} {rows[0]['metricValues'][0]['value'] + ' kejadian' if rows else 'TIDAK ADA data'}")

print("\n=== 3. waktu nyata (30 menit terakhir) ===")
d = tanya(f"https://analyticsdata.googleapis.com/v1beta/{GA4}:runRealtimeReport",
          {"dimensions": [{"name": "eventName"}], "metrics": [{"name": "eventCount"}], "limit": 50})
if "err" in d:
    print("   gagal:", d)
else:
    for r in d.get("rows", []):
        print(f"   {r['metricValues'][0]['value']:>4}x {r['dimensionValues'][0]['value']}")
    if not d.get("rows"):
        print("   (belum ada aktivitas)")
