Blob Blame History Raw
// +build kolo_xmlrpc_oldapi
//
// This file provides a wrapper around kolo/xmlrpc response handling.
//
// Commit e3ad6d89 of the xmlrpc library changed the API of response handling.
// This means that different APIs are available in Fedora 32 and 33 (it does
// not matter for RHEL as uses vendored libraries).
// This wrapper allows us to use both xmlrpc's APIs using buildflags.
//
// This file is a wrapper for xmlrpc older than e3ad6d89.

package koji

import (
	"fmt"

	"github.com/kolo/xmlrpc"
)

// processXMLRPCResponse is a wrapper around kolo/xmlrpc
func processXMLRPCResponse(body []byte, reply interface{}) error {
	resp := xmlrpc.NewResponse(body)
	if resp.Failed() {
		return fmt.Errorf("xmlrpc server returned an error: %v", resp.Err())
	}

	err := resp.Unmarshal(reply)
	if err != nil {
		return fmt.Errorf("cannot unmarshal the xmlrpc response: %v", err)
	}

	return nil
}