"""
Базовый класс для обработчиков MCP команд
"""

import logging
from typing import Dict, Any
from abc import ABC, abstractmethod

class BaseHandler(ABC):
    """Базовый класс для всех обработчиков MCP команд"""
    
    def __init__(self, server_instance):
        """Инициализация обработчика"""
        self.server = server_instance
    
    def make_request(self, endpoint: str, data: Dict = None) -> Dict:
        """Выполнение HTTP запроса к API серверу"""
        return self.server.make_request(endpoint, data)
    
    def register_tool(self, name: str, description: str, function, input_schema: Dict = None):
        """Регистрация инструмента в сервере"""
        self.server.register_tool(name, description, function, input_schema)
    
    @abstractmethod
    def register_tools(self):
        """Регистрация всех инструментов обработчика"""
        pass
    
    async def handle_error(self, error: Exception, context: str = "") -> Dict:
        """Обработка ошибок"""
        error_msg = f"Ошибка в {self.__class__.__name__}: {str(error)}"
        if context:
            error_msg += f" (контекст: {context})"
        
        logging.error(error_msg)
        return {
            "success": False,
            "error": error_msg
        } 