#!/usr/bin/env python3
"""
Script para probar backup manual vía API
"""

import requests
import json


def test_manual_backup_api():
    """Probar backup manual vía API HTTP"""

    base_url = "http://127.0.0.1:5120"

    try:
        # 1. Obtener lista de proyectos
        print("1. Obteniendo lista de proyectos...")
        response = requests.get(f"{base_url}/api/projects")

        if response.status_code == 200:
            data = response.json()
            projects = data.get("projects", [])
            print(f"   ✅ Proyectos encontrados: {len(projects)}")

            if projects:
                project = projects[0]
                project_id = project["id"]
                project_name = project["name"]
                print(f"   Probando con: {project_name}")

                # 2. Ejecutar backup manual
                print("2. Ejecutando backup manual...")
                backup_response = requests.post(
                    f"{base_url}/api/projects/{project_id}/backup",
                    headers={"Content-Type": "application/json"},
                )

                if backup_response.status_code == 200:
                    backup_data = backup_response.json()
                    print("   ✅ BACKUP EXITOSO!")
                    print(f"   Mensaje: {backup_data.get('message')}")
                    print(f"   Archivo: {backup_data.get('backup_file')}")
                    print(f"   Tamaño: {backup_data.get('file_size_mb', 'N/A')} MB")
                else:
                    print("   ❌ BACKUP FALLÓ!")
                    print(f"   Status: {backup_response.status_code}")
                    print(f"   Error: {backup_response.text}")

                # 3. Probar actualización de configuración
                print("3. Probando actualización de configuración...")
                config_data = {
                    "schedule_config": {
                        "schedule": "hourly",
                        "schedule_time": "15:30",
                        "enabled": False,
                    }
                }

                config_response = requests.put(
                    f"{base_url}/api/projects/{project_id}/config",
                    headers={"Content-Type": "application/json"},
                    json=config_data,
                )

                if config_response.status_code == 200:
                    print("   ✅ CONFIGURACIÓN ACTUALIZADA!")
                    config_result = config_response.json()
                    print(f"   Status: {config_result.get('status')}")
                else:
                    print("   ❌ ACTUALIZACIÓN FALLÓ!")
                    print(f"   Status: {config_response.status_code}")
                    print(f"   Error: {config_response.text}")

            else:
                print("   ❌ No hay proyectos para probar")
        else:
            print(f"   ❌ Error obteniendo proyectos: {response.status_code}")
            print(f"   {response.text}")

    except requests.exceptions.ConnectionError:
        print("❌ ERROR: No se pudo conectar al servidor")
        print("   Asegúrate de que la aplicación Flask esté ejecutándose")
    except Exception as e:
        print(f"❌ ERROR INESPERADO: {e}")


if __name__ == "__main__":
    print("AutoBackups - Test API via HTTP")
    print("=" * 40)
    test_manual_backup_api()
    print("=" * 40)
