Se agregaron los moduloes de api_v2
This commit is contained in:
103
api/api_v2/modules/coves/controllers.py
Normal file
103
api/api_v2/modules/coves/controllers.py
Normal file
@@ -0,0 +1,103 @@
|
||||
from typing import Any, Dict
|
||||
from controllers.RESTController import APIRESTController
|
||||
from controllers.SOAPController import VUCEMController
|
||||
|
||||
class CovesController(APIRESTController):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
async def get_cer(self, id: str) -> bytes:
|
||||
"""
|
||||
Método para obtener un certificado específico desde la API (como binario).
|
||||
Args:
|
||||
id: UUID del certificado a consultar
|
||||
Returns:
|
||||
bytes: Contenido binario del certificado
|
||||
"""
|
||||
return await self._make_request_async('GET', f'vucem/vucem/{id}/download_cer/', return_bytes=True)
|
||||
|
||||
async def get_key(self, id: str) -> bytes:
|
||||
"""
|
||||
Método para obtener una llave específica desde la API (como binario).
|
||||
Args:
|
||||
id: UUID de la llave a consultar
|
||||
Returns:
|
||||
bytes: Contenido binario de la llave
|
||||
"""
|
||||
return await self._make_request_async('GET', f'vucem/vucem/{id}/download_key/', return_bytes=True)
|
||||
|
||||
async def put_cove_data(self, cove_id, data) -> Dict[str, Any]:
|
||||
return await self._make_request_async('PUT', f'customs/coves/{cove_id}/', data=data)
|
||||
|
||||
|
||||
class CovesVUController(VUCEMController):
|
||||
def __init__(self):
|
||||
super().__init__() # Implementación específica para Coves VU
|
||||
|
||||
def generate_cove_template(self, username: str, password: str, certificado: str, firma: str, cove: str) -> str:
|
||||
"""
|
||||
Genera el template SOAP para consultar un COVE específico
|
||||
|
||||
Args:
|
||||
username: Usuario de VUCEM
|
||||
password: Contraseña de VUCEM
|
||||
certificado: certificado base 64
|
||||
firma: firma a base de cadena original base 64
|
||||
cove: COVE
|
||||
|
||||
Returns:
|
||||
str: Template SOAP XML completo
|
||||
"""
|
||||
soap_template = f'''
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
||||
xmlns:con="http://www.ventanillaunica.gob.mx/ConsultarEdocument/"
|
||||
xmlns:oxml="http://www.ventanillaunica.gob.mx/cove/ws/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>
|
||||
<con:ConsultarEdocumentRequest>
|
||||
<con:request>
|
||||
<con:firmaElectronica>
|
||||
<oxml:certificado>{certificado}</oxml:certificado>
|
||||
<oxml:cadenaOriginal>|{username}|{cove}|</oxml:cadenaOriginal>
|
||||
<oxml:firma>{firma}</oxml:firma>
|
||||
</con:firmaElectronica>
|
||||
<con:criterioBusqueda>
|
||||
<con:eDocument>{cove}</con:eDocument>
|
||||
</con:criterioBusqueda>
|
||||
</con:request>
|
||||
</con:ConsultarEdocumentRequest>
|
||||
</soapenv:Body>
|
||||
</soapenv:Envelope>
|
||||
'''
|
||||
return soap_template
|
||||
|
||||
def generate_acuse_template(self, username: str, password: str, cove: str) -> str:
|
||||
soap_template = f'''
|
||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oxml="http://www.ventanillaunica.gob.mx/consulta/acuses/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>
|
||||
<oxml:consultaAcusesPeticion>
|
||||
<idEdocument>{cove}</idEdocument>
|
||||
</oxml:consultaAcusesPeticion>
|
||||
</soapenv:Body>
|
||||
</soapenv:Envelope>
|
||||
'''
|
||||
return soap_template
|
||||
|
||||
coves_rest_controller = CovesController()
|
||||
coves_vu_controller = CovesVUController()
|
||||
|
||||
Reference in New Issue
Block a user