#!/usr/bin/env python3
"""Create a Google Calendar event with Meet link."""
import json, os, sys
from urllib.request import Request, urlopen
from urllib.error import HTTPError
from datetime import datetime
import uuid

CREDS_PATH = "/home/clawd/.clawdbot/skills/gmail/credentials.json"
TOKEN_PATH = "/home/clawd/.clawdbot/skills/gmail/tokens/bot-calendar.json"

def get_access_token():
    with open(CREDS_PATH) as f:
        creds = json.load(f)
    client = creds.get("installed", creds.get("web", {}))
    with open(TOKEN_PATH) as f:
        token = json.load(f)
    data = (
        f"client_id={client['client_id']}"
        f"&client_secret={client['client_secret']}"
        f"&refresh_token={token['refresh_token']}"
        f"&grant_type=refresh_token"
    ).encode()
    req = Request("https://oauth2.googleapis.com/token", data=data,
                  headers={"Content-Type": "application/x-www-form-urlencoded"})
    return json.loads(urlopen(req, timeout=10).read())["access_token"]

def create_event(title, start_iso, end_iso, attendees=None, description=""):
    token = get_access_token()
    
    event = {
        "summary": title,
        "description": description,
        "start": {
            "dateTime": start_iso,
            "timeZone": "Asia/Jerusalem"
        },
        "end": {
            "dateTime": end_iso,
            "timeZone": "Asia/Jerusalem"
        },
        "conferenceData": {
            "createRequest": {
                "requestId": str(uuid.uuid4()),
                "conferenceSolutionKey": {"type": "hangoutsMeet"}
            }
        },
        "guestsCanModify": True,
        "guestsCanInviteOthers": True,
        "guestsCanSeeOtherGuests": True
    }
    
    if attendees:
        event["attendees"] = [{"email": e} for e in attendees]
    
    url = "https://www.googleapis.com/calendar/v3/calendars/primary/events?conferenceDataVersion=1&sendUpdates=all"
    
    data = json.dumps(event).encode()
    req = Request(url, data=data, headers={
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    })
    
    try:
        result = json.loads(urlopen(req, timeout=30).read())
        print(f"✅ Event created: {result.get('htmlLink')}")
        print(f"📹 Meet link: {result.get('conferenceData', {}).get('entryPoints', [{}])[0].get('uri', 'N/A')}")
        print(f"🆔 Event ID: {result.get('id')}")
        return result
    except HTTPError as e:
        print(f"ERROR {e.code}: {e.read().decode()}", file=sys.stderr)
        return None

if __name__ == "__main__":
    # Jessica <> Assaf Intro - Feb 16, 2026 10:30am Israel time
    result = create_event(
        title="Jessica <> Assaf Intro",
        start_iso="2026-02-16T10:30:00",
        end_iso="2026-02-16T11:00:00",
        attendees=["jessica.s@team8.vc", "assafdagan@gmail.com"],
        description="Intro meeting"
    )
    if result:
        print(json.dumps(result, indent=2))
