Files
microservice/api/api_v2/modules/edocs/controllers.py
2025-10-05 23:55:35 -06:00

66 lines
2.2 KiB
Python

# 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_edocument_template(self, username: str, password: str, idEDocument: str) -> str:
"""
Genera el template SOAP para consultar un EDocument específico
Args:
username: Usuario de VUCEM
password: Contraseña de VUCEM
idEDocument: ID del EDocument
Returns:
str: Template SOAP XML completo
"""
soap_template = f'''
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/">
<soapenv:Header>
<tem:UserName>{username}</tem:UserName>
<tem:Password>{password}</tem:Password>
</soapenv:Header>
<soapenv:Body>
<tem:DocumentoIn>
<tem:Edocument>{idEDocument}</tem:Edocument>
<tem:IsCertificado>1</tem:IsCertificado>
</tem:DocumentoIn>
</soapenv:Body>
</soapenv:Envelope>
'''
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()