Se agregaron los moduloes de api_v2
This commit is contained in:
63
api/api_v2/modules/edocs/controllers.py
Normal file
63
api/api_v2/modules/edocs/controllers.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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'''
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:edoc="http://www.ventanillaunica.gob.mx/consulta/edocs/oxml">
|
||||
<soapenv:Header>
|
||||
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
|
||||
<wsse:UsernameToken>
|
||||
<wsse:Username>{username}</wsse:Username>
|
||||
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{password}</wsse:Password>
|
||||
</wsse:UsernameToken>
|
||||
</wsse:Security>
|
||||
</soapenv:Header>
|
||||
<soapenv:Body>
|
||||
<edoc:consultaEdocumentoPeticion>
|
||||
<idEdocument>{numero_documento}</idEdocument>
|
||||
</edoc:consultaEdocumentoPeticion>
|
||||
</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()
|
||||
Reference in New Issue
Block a user