handle http errors
ok @jrick, @jcvernaleo
This commit is contained in:
parent
26802c7ecc
commit
1caddd4a37
2 changed files with 12 additions and 6 deletions
12
jsonapi.go
12
jsonapi.go
|
@ -8,8 +8,17 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// BadStatusCode describes a HTTP error when a response has non-200 status code
|
||||||
|
type BadStatusCode int
|
||||||
|
|
||||||
|
func (e BadStatusCode) Error() string {
|
||||||
|
status := int(e)
|
||||||
|
return fmt.Sprintf("http bad status: %d %s", status, http.StatusText(status))
|
||||||
|
}
|
||||||
|
|
||||||
// ErrIncorrectArgTypes describes an error where the wrong argument types
|
// ErrIncorrectArgTypes describes an error where the wrong argument types
|
||||||
// are present.
|
// are present.
|
||||||
var ErrIncorrectArgTypes = errors.New("incorrect arguement types")
|
var ErrIncorrectArgTypes = errors.New("incorrect arguement types")
|
||||||
|
@ -696,6 +705,9 @@ func rpcRawCommand(user string, password string, server string,
|
||||||
err := fmt.Errorf("error sending json message: " + err.Error())
|
err := fmt.Errorf("error sending json message: " + err.Error())
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
return nil, BadStatusCode(resp.StatusCode)
|
||||||
|
}
|
||||||
result, err = GetRaw(resp.Body)
|
result, err = GetRaw(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err := fmt.Errorf("error getting json reply: %v", err)
|
err := fmt.Errorf("error getting json reply: %v", err)
|
||||||
|
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// BlockResult models the data from the getblock command when the verbose flag
|
// BlockResult models the data from the getblock command when the verbose flag
|
||||||
|
@ -446,11 +445,6 @@ func ReadResultCmd(cmd string, message []byte) (Reply, error) {
|
||||||
var objmap map[string]json.RawMessage
|
var objmap map[string]json.RawMessage
|
||||||
err = json.Unmarshal(message, &objmap)
|
err = json.Unmarshal(message, &objmap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(string(message), "401 Unauthorized.") {
|
|
||||||
err = fmt.Errorf("authentication error")
|
|
||||||
} else {
|
|
||||||
err = fmt.Errorf("error unmarshalling json reply: %v", err)
|
|
||||||
}
|
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
// Take care of the parts that are the same for all replies.
|
// Take care of the parts that are the same for all replies.
|
||||||
|
|
Loading…
Reference in a new issue