# controllers.py from controllers.RESTController import APIRESTController from controllers.SOAPController import VUCEMController from typing import List, Dict, Any class EdocVuController(VUCEMController): """ Controlador para interactuar con el servicio SOAP de la Ventanilla Única para la descarga de documentos electrónicos (edocs). """ def __init__(self): super().__init__() def generate_edoc_template(self, **kwargs) -> str: """ Genera el template XML de la solicitud SOAP para un edoc. """ credencial = kwargs.get("credencial", {}) username = credencial.get("user") password = credencial.get("password") # Aquí usamos `numero_documento` en lugar de `idEDocument` para reflejar el esquema de edocs numero_documento = kwargs['edoc'].get("numero_edocument", "N/A") soap_template = f''' {username} {password} {numero_documento} ''' return soap_template class EdocRESTController(APIRESTController): """ Controlador para interactuar con la API REST interna para guardar documentos electrónicos. """ def __init__(self): super().__init__() async def put_edocument(self, edocument_id: str, data: Dict[str, Any]) -> Dict[str, Any]: """ Método para actualizar un documento digitalizado en la API. Args: edocument_id: UUID del documento a actualizar data: Diccionario con los datos a actualizar """ return await self._make_request_async('PUT', f'customs/edocuments/{edocument_id}/', data=data) # Instancias de los controladores que serán importadas en services.py edocs_vu_controller = EdocVuController() edocs_rest_controller = EdocRESTController()