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'''
{username}
{password}
{certificado}
|{username}|{cove}|
{firma}
{cove}
'''
return soap_template
def generate_acuse_template(self, username: str, password: str, cove: str) -> str:
soap_template = f'''
{username}
{password}
{cove}
'''
return soap_template
coves_rest_controller = CovesController()
coves_vu_controller = CovesVUController()