2025-05-17 11:36:26 -04:00

51 lines
1.5 KiB
Go

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,
}
}