"""
Ejemplo de uso del SDK de KeyNexus para Python
"""

from keynexus import KeyNexusClient
from keynexus.exceptions import (
    InvalidLicenseError,
    HWIDMismatchError,
    ExpiredLicenseError
)


def example_validate_license():
    """Ejemplo: Validar una licencia"""
    
    # Inicializar cliente
    client = KeyNexusClient(
        app_id="app_xxxxxxxxxxxx",  # Tu App ID real
        secret_key="sk_xxxxxxxxxxxxxxxxxxxx",  # Tu Secret Key real
        api_url="https://keynexus.es/api"
    )
    
    # El SDK genera automáticamente el HWID
    print(f"HWID generado: {client.get_hwid()}")
    
    # Validar licencia
    try:
        result = client.validate_license("XXXXX-XXXXX-XXXXX-XXXXX")
        
        if result['success']:
            print("✅ Licencia válida!")
            license_data = result['license']
            
            print(f"Tipo: {license_data['type']}")
            
            if license_data['type'] == 'lifetime':
                print("Licencia vitalicia - sin expiración")
            elif license_data.get('daysLeft'):
                print(f"Días restantes: {license_data['daysLeft']}")
            
            if license_data.get('expiresAt'):
                print(f"Expira el: {license_data['expiresAt']}")
        else:
            print(f"❌ Error: {result['message']}")
            
    except InvalidLicenseError as e:
        print(f"❌ Licencia inválida: {e}")
    except HWIDMismatchError as e:
        print(f"❌ HWID no coincide: {e}")
    except ExpiredLicenseError as e:
        print(f"❌ Licencia expirada: {e}")
    except Exception as e:
        print(f"❌ Error inesperado: {e}")


def example_login_with_password():
    """Ejemplo: Login con usuario y contraseña"""
    
    client = KeyNexusClient(
        app_id="app_xxxxxxxxxxxx",
        secret_key="sk_xxxxxxxxxxxxxxxxxxxx"
    )
    
    try:
        result = client.login_with_password(
            username="tu_usuario",
            password="tu_contraseña"
        )
        
        if result['success']:
            print("✅ Login exitoso!")
            user = result['user']
            print(f"Bienvenido, {user['username']}!")
            print(f"Email: {user.get('email')}")
            
            # Obtener más información del usuario
            user_info = client.get_user_info()
            if user_info['success']:
                print(f"HWID actual: {user_info['user'].get('hwid')}")
                print(f"Suscripción expira: {user_info['user'].get('subscriptionExpiry')}")
        else:
            print(f"❌ Login fallido: {result['message']}")
            
    except Exception as e:
        print(f"❌ Error: {e}")


def example_initialize_app():
    """Ejemplo: Inicializar aplicación"""
    
    client = KeyNexusClient(
        app_id="app_xxxxxxxxxxxx",
        secret_key="sk_xxxxxxxxxxxxxxxxxxxx"
    )
    
    try:
        result = client.initialize(version="1.0.0")
        
        if result['success']:
            print("✅ Aplicación inicializada correctamente")
            print(f"Estado: {result.get('status')}")
        else:
            print(f"❌ Error al inicializar: {result['message']}")
            
    except Exception as e:
        print(f"❌ Error: {e}")


def example_session_management():
    """Ejemplo: Gestión de sesiones"""
    
    client = KeyNexusClient(
        app_id="app_xxxxxxxxxxxx",
        secret_key="sk_xxxxxxxxxxxxxxxxxxxx"
    )
    
    # Primero hacer login
    login_result = client.login_with_password("usuario", "contraseña")
    
    if login_result['success']:
        print("✅ Login exitoso")
        
        # Obtener sesiones activas
        sessions = client.get_sessions()
        
        if sessions['success']:
            print(f"\nSesiones activas: {len(sessions.get('sessions', []))}")
            
            for session in sessions.get('sessions', []):
                print(f"  - IP: {session.get('ip')}")
                print(f"    HWID: {session.get('hwid')}")
                print(f"    Creada: {session.get('createdAt')}")
        
        # Logout
        logout_result = client.logout()
        if logout_result['success']:
            print("\n✅ Sesión cerrada correctamente")


def example_custom_hwid():
    """Ejemplo: Usar un HWID personalizado"""
    
    client = KeyNexusClient(
        app_id="app_xxxxxxxxxxxx",
        secret_key="sk_xxxxxxxxxxxxxxxxxxxx",
        auto_hwid=False  # No generar HWID automáticamente
    )
    
    # Establecer HWID personalizado
    custom_hwid = "mi-hwid-personalizado-12345"
    client.set_hwid(custom_hwid)
    
    print(f"HWID configurado: {client.get_hwid()}")
    
    # Validar con HWID personalizado
    result = client.validate_license("XXXXX-XXXXX-XXXXX-XXXXX")
    print(f"Resultado: {result['success']}")


if __name__ == "__main__":
    print("=== KeyNexus Python SDK - Ejemplos ===\n")
    
    print("1. Validar Licencia")
    example_validate_license()
    
    print("\n2. Login con Contraseña")
    example_login_with_password()
    
    print("\n3. Inicializar Aplicación")
    example_initialize_app()
    
    print("\n4. Gestión de Sesiones")
    example_session_management()
    
    print("\n5. HWID Personalizado")
    example_custom_hwid()
