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 |
}
|