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 }