#!/usr/bin/env python3
"""Versi published & tag di dua container studiosoft.id — lewat REST langsung."""
import json, os, urllib.request, urllib.error
from google.auth.transport.requests import Request
from google.oauth2 import service_account

creds = service_account.Credentials.from_service_account_file(
    os.path.expanduser("~/.hermes/gsc_service_account.json"),
    scopes=["https://www.googleapis.com/auth/tagmanager.readonly"])
creds.refresh(Request())
BASE = "https://tagmanager.googleapis.com/tagmanager/v2"


def get(path):
    try:
        req = urllib.request.Request(f"{BASE}/{path}", headers={"Authorization": f"Bearer {creds.token}"})
        with urllib.request.urlopen(req, timeout=60) as x:
            return json.loads(x.read())
    except urllib.error.HTTPError as e:
        return {"error": e.code, "detail": e.read().decode()[:200]}


KANDIDAT = {"GTM-WQX6PGNR": "accounts/6303077991/containers/224445829",
            "GTM-PZBR35TB": "accounts/6269687730/containers/206637156"}
for pub, path in KANDIDAT.items():
    print("=" * 88)
    print(f"CONTAINER {pub}  ({path})")
    v = get(f"{path}/versions")
    if "error" in v:
        print("  versions error:", v); continue
    vers = v.get("containerVersionHeader", [])
    print(f"  versi tersimpan: {len(vers)}")
    for x in vers[:6]:
        print(f"    versi {x.get('containerVersionId')} | {x.get('name')} | deleted={x.get('deleted')} | "
              f"tags={x.get('numTags')} triggers={x.get('numTriggers')} vars={x.get('numVariables')}")
    if vers:
        vid = vers[0]["containerVersionId"]
        cv = get(f"{path}/versions/{vid}")
        tags = cv.get("tag", [])
        print(f"  -- isi versi terbaru: {len(tags)} tag")
        for t in tags:
            print(f"     • {t.get('name')} | {t.get('type')} | trigger={t.get('firingTriggerId')}")
            for p in (t.get("parameter") or []):
                if p.get("key") in ("eventName", "measurementId", "tagId", "html", "measurementIdOverride", "streamId"):
                    print(f"         {p.get('key')}: {str(p.get('value'))[:220]}")
    ws = get(f"{path}/workspaces").get("workspace", [])
    for w in ws:
        t2 = get(f"{w['path']}/tags").get("tag", [])
        print(f"  workspace '{w.get('name')}': {len(t2)} tag (draft)")
        for t in t2:
            print(f"     • {t.get('name')} | {t.get('type')}")
