Blame vendor/github.com/kolo/xmlrpc/response.go

Packit 63bb0d
package xmlrpc
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"fmt"
Packit 63bb0d
	"regexp"
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
var (
Packit 63bb0d
	faultRx = regexp.MustCompile(`<fault>(\s|\S)+</fault>`)
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
// FaultError is returned from the server when an invalid call is made
Packit 63bb0d
type FaultError struct {
Packit 63bb0d
	Code   int    `xmlrpc:"faultCode"`
Packit 63bb0d
	String string `xmlrpc:"faultString"`
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
// Error implements the error interface
Packit 63bb0d
func (e FaultError) Error() string {
Packit 63bb0d
	return fmt.Sprintf("Fault(%d): %s", e.Code, e.String)
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type Response []byte
Packit 63bb0d
Packit 63bb0d
func (r Response) Err() error {
Packit 63bb0d
	if !faultRx.Match(r) {
Packit 63bb0d
		return nil
Packit 63bb0d
	}
Packit 63bb0d
	var fault FaultError
Packit 63bb0d
	if err := unmarshal(r, &fault); err != nil {
Packit 63bb0d
		return err
Packit 63bb0d
	}
Packit 63bb0d
	return fault
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func (r Response) Unmarshal(v interface{}) error {
Packit 63bb0d
	if err := unmarshal(r, v); err != nil {
Packit 63bb0d
		return err
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	return nil
Packit 63bb0d
}