#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
VWED.api 模块 - API接口注册
"""

from typing import Dict, Any, Callable
from ..script_registry_service import get_global_registry


class VWEDApiModule:
    """VWED.api 模块 - API接口注册"""
    
    def __init__(self, script_id: str):
        self.script_id = script_id
        self.registry = get_global_registry()
    
    def register_route(self, path: str, method: str = "GET", handler: Callable = None,
                      description: str = "", params: Dict = None, 
                      parameters: Dict = None, response_schema: Dict = None):
        """分离式API接口注册（用户要求的新格式）
        
        使用方式：
        VWED.api.register_route(
            path="/calculate",
            method="POST", 
            handler=calculate_handler,
            description="数学计算接口",
            params={"a": 0, "b": 0, "operation": "add"}  # 简化的参数定义
        )
        """
        # 验证HTTP方法
        valid_methods = ["GET", "POST", "PUT", "DELETE"]
        if method.upper() not in valid_methods:
            raise ValueError(f"method参数错误：'{method}' 不是有效的HTTP请求方式。支持的方式有：{', '.join(valid_methods)}")
        
        if handler is None:
            raise ValueError("handler参数不能为空")
            
        self.registry.register_api_route(
            path=path,
            method=method.upper(),
            handler=handler,
            script_id=self.script_id,
            description=description,
            params=params,  # 传递简化的参数格式
            parameters=parameters,
            response_schema=response_schema
        )
        return handler