Facturacion/daemonService/internal/soap/parsearRespuestaSOAP.go
2025-05-17 11:36:26 -04:00

55 lines
1.5 KiB
Go

package soap
import (
"daemonService/internal/models/sincronizacionDatos/response"
"encoding/xml"
"fmt"
)
// Función genérica para parsear respuesta sincronizacion datos
func ParsearRespuestaSOAP[T any, E response.SoapResponse[T]](body []byte) (T, error) {
var envelope E
var emptyResult T
if err := xml.Unmarshal(body, &envelope); err != nil {
return emptyResult, fmt.Errorf("error deserializando XML: %v", err)
}
if !envelope.IsTransactionSuccessful() {
return emptyResult, fmt.Errorf("transacción fallida en respuesta ParsearRespuestaSOAP")
}
return envelope.GetData(), nil
}
// Función para generar identificadores dinamicos
func ParsearRespuestaSOAPIdentificador[T any, E response.SoapResponseLeyenda[T]](body []byte) (T, error) {
var envelope E
var emptyResult T
if err := xml.Unmarshal(body, &envelope); err != nil {
return emptyResult, fmt.Errorf("error deserializando XML: %v", err)
}
if !envelope.IsTransactionSuccessful() {
return emptyResult, fmt.Errorf("transacción fallida en respuesta ParsearRespuestaSOAPLeyendas")
}
// Asignar los códigos secuenciales
envelope.AsignarCodigosSecuenciales()
return envelope.GetData(), nil
}
// Función fecha hora
func ParsearRespuestaSOAPfechaHora[T any, E response.SoapResponseFechaHora[T]](body []byte) (T, error) {
var envelope E
var emptyResult T
if err := xml.Unmarshal(body, &envelope); err != nil {
return emptyResult, fmt.Errorf("error deserializando XML: %v", err)
}
return envelope.GetData(), nil
}