55 lines
1.5 KiB
Go
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
|
|
}
|