#!/usr/bin/env python3
"""Baca container GTM yang benar-benar jalan di studiosoft.id lewat Tag Manager API."""
import os
from google.oauth2 import service_account
from googleapiclient.discovery import build

creds = service_account.Credentials.from_service_account_file(
    os.path.expanduser("~/.hermes/gsc_service_account.json"),
    scopes=["https://www.googleapis.com/auth/tagmanager.readonly"])
gtm = build("tagmanager", "v2", credentials=creds, cache_discovery=False)

try:
    accs = gtm.accounts().list().execute().get("account", [])
except Exception as e:
    print("GAGAL akses GTM:", str(e)[:400])
    raise SystemExit(1)

print(f"akun GTM yang bisa dilihat SA: {len(accs)}")
CONTAINER = None
for a in accs:
    print(f"\nakun: {a['accountId']} | {a.get('name')}")
    for c in gtm.accounts().containers().list(parent=a["path"]).execute().get("container", []):
        print(f"   container: {c['containerId']} | {c.get('name')} | publik: {c.get('publicId')} | domain: {c.get('domainName','-')}")
        if c.get("publicId") == "GTM-WQX6PGNR":
            CONTAINER = c
        if c.get("publicId") == "GTM-PZBR35TB":
            print("      ^^ ini container PZBR35TB yang tadi ditanyakan")

if not CONTAINER:
    print("\ncontainer GTM-WQX6PGNR tidak ketemu di daftar akun yang bisa diakses SA")
    raise SystemExit(0)

W = CONTAINER["path"] + "/workspaces"
ws = gtm.accounts().containers().workspaces().list(parent=CONTAINER["path"]).execute().get("workspace", [])
print(f"\n=== container {CONTAINER.get('name')} ({CONTAINER['publicId']}) — {len(ws)} workspace ===")
for w in ws:
    print(f"\n--- workspace: {w.get('name')} ---")
    tags = gtm.accounts().containers().workspaces().tags().list(parent=w["path"]).execute().get("tag", [])
    print(f"  TAG ({len(tags)}):")
    for t in tags:
        jenis = list(t.get("type", ""))
        print(f"    [{t['tagId']}] {t.get('name')} | type={t.get('type')} | firing={t.get('firingTriggerId')}")
        for k, v in (t.get("parameter") or []):
            if k in ("eventName", "measurementId", "tagId", "html", "eventParameters", "measurementIdOverride"):
                print(f"        {k}: {str(v)[:180]}")
    trg = gtm.accounts().containers().workspaces().triggers().list(parent=w["path"]).execute().get("trigger", [])
    print(f"  TRIGGER ({len(trg)}):")
    for g in trg:
        print(f"    [{g['triggerId']}] {g.get('name')} | type={g.get('type')} | filter={str(g.get('customEventFilter') or g.get('filter') or '')[:120]}")
    var = gtm.accounts().containers().workspaces().variables().list(parent=w["path"]).execute().get("variable", [])
    print(f"  VARIABLE ({len(var)}):")
    for v in var:
        print(f"    {v.get('name')} | type={v.get('type')}")
