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()