#!/usr/bin/env python3
"""Register for a SnapService API key.

Usage:
    python3 register.py
    python3 register.py --name my-agent

One API key per IP address. No challenge required.
"""

import json
import urllib.request
import sys

BASE = "https://snap.llm.kaveenk.com"

def register(name="my-agent", email=""):
    body = json.dumps({"name": name, "email": email}).encode()
    req = urllib.request.Request(
        f"{BASE}/api/register",
        data=body,
        headers={"Content-Type": "application/json"}
    )
    
    try:
        with urllib.request.urlopen(req) as resp:
            data = json.loads(resp.read())
    except urllib.error.HTTPError as e:
        error = json.loads(e.read())
        print(f"\nError: {error.get('error', 'Unknown error')}")
        if error.get('hint'):
            print(f"Hint: {error['hint']}")
        sys.exit(1)
    
    print(f"\n✅ Registered!")
    print(f"API Key: {data['key']}")
    print(f"Limits: {data['limits']['per_minute']}/min, {data['limits']['per_day']}/day")
    print("\nStore this key securely. It cannot be recovered.")
    print("Note: One API key per IP address.")
    return data['key']


if __name__ == "__main__":
    name = input("Agent name (default: my-agent): ").strip() or "my-agent"
    email = input("Email (optional): ").strip()
    register(name, email)
