package soap import ( "api-soap-facturacion/internal/config" "api-soap-facturacion/internal/logger" "api-soap-facturacion/internal/soap/api" "api-soap-facturacion/internal/soap/api2" factOp "api-soap-facturacion/internal/soap/facturacionOperaciones" "time" ) // Clients contiene todos los clientes SOAP disponibles type Clients struct { API1 api1.Client API2 api2.Client API_FACTURACION_OPERACION factOp.Client } // crea nuevos clientes SOAP para todas las APIs configuradas func NewSoapClients(cfg *config.Config, log logger.Logger) *Clients { soapLogger := log.With(logger.NewField("component", "soap_client")) // Crear cliente para API1 api1Client := api1.NewClient( cfg.Soap.APIs["api1"], soapLogger.With(logger.NewField("api", "api1")), ) // Crear cliente para API2 api2Client := api2.NewClient( cfg.Soap.APIs["api2"], soapLogger.With(logger.NewField("api", "api2")), ) // Configurar opciones del cliente options := &factOp.ClientOptions{ Timeout: 45 * time.Second, // TambiƩn puedes configurar un cliente HTTP personalizado si necesitas // manejar proxies, certificados personalizados, etc. } // Registro Codigo Punto de Venta apifactOperacion := factOp.NewClient(options, cfg.Soap.APIs["facturacionOperaciones"], soapLogger.With(logger.NewField("api", "registroPuntoVenta"))) return &Clients{ API1: api1Client, API2: api2Client, API_FACTURACION_OPERACION: *apifactOperacion, } }