#!/usr/bin/env python3
"""
Módulo para leer configuración centralizada desde /etc/centralita-tarot/config.env
Compatible con Python AGI scripts
"""

import os
import configparser
from typing import Dict, Any

class ConfigReader:
    """Lee configuración desde archivo .env centralizado"""
    
    def __init__(self, config_file: str = '/etc/centralita-tarot/config.env'):
        self.config_file = config_file
        self.config = {}
        self._load_config()
    
    def _load_config(self):
        """Carga la configuración desde el archivo .env"""
        if not os.path.exists(self.config_file):
            raise FileNotFoundError(f"Config file not found: {self.config_file}")
        
        # Leer archivo como INI simple
        with open(self.config_file, 'r') as f:
            for line in f:
                line = line.strip()
                # Ignorar comentarios y líneas vacías
                if line and not line.startswith('#'):
                    if '=' in line:
                        key, value = line.split('=', 1)
                        self.config[key.strip()] = value.strip()
    
    def get(self, key: str, default: Any = None) -> Any:
        """Obtiene un valor de configuración"""
        return self.config.get(key, default)
    
    def get_db_config(self) -> Dict[str, str]:
        """Retorna configuración de base de datos"""
        return {
            'host': self.get('DB_HOST', 'localhost'),
            'user': self.get('DB_USER'),
            'password': self.get('DB_PASSWORD'),
            'database': self.get('DB_NAME_ASTERISK', 'asterisk'),
            'charset': self.get('DB_CHARSET', 'utf8mb4')
        }
    
    def get_ami_config(self) -> Dict[str, str]:
        """Retorna configuración AMI"""
        return {
            'host': self.get('AMI_HOST', '127.0.0.1'),
            'port': int(self.get('AMI_PORT', '5038')),
            'username': self.get('AMI_USERNAME'),
            'secret': self.get('AMI_SECRET'),
            'timeout': int(self.get('AMI_TIMEOUT', '30'))
        }

# Singleton para uso global
_config_instance = None

def get_config():
    """Obtiene la instancia singleton de configuración"""
    global _config_instance
    if _config_instance is None:
        _config_instance = ConfigReader()
    return _config_instance

if __name__ == "__main__":
    # Test del módulo
    try:
        config = get_config()
        print("Database config:", config.get_db_config())
        print("AMI config:", config.get_ami_config())
    except Exception as e:
        print(f"Error: {e}")