47 lines
823 B
Go
47 lines
823 B
Go
package httpclient
|
|
|
|
var _ ReplyErr = (*replyErr)(nil)
|
|
|
|
// ReplyErr 错误响应,当 resp.StatusCode != http.StatusOK 时用来包装返回的 httpcode 和 body 。
|
|
type ReplyErr interface {
|
|
error
|
|
StatusCode() int
|
|
Body() []byte
|
|
}
|
|
|
|
type replyErr struct {
|
|
err error
|
|
statusCode int
|
|
body []byte
|
|
}
|
|
|
|
func (r *replyErr) Error() string {
|
|
return r.err.Error()
|
|
}
|
|
|
|
func (r *replyErr) StatusCode() int {
|
|
return r.statusCode
|
|
}
|
|
|
|
func (r *replyErr) Body() []byte {
|
|
return r.body
|
|
}
|
|
|
|
func newReplyErr(statusCode int, body []byte, err error) ReplyErr {
|
|
return &replyErr{
|
|
statusCode: statusCode,
|
|
body: body,
|
|
err: err,
|
|
}
|
|
}
|
|
|
|
// ToReplyErr 尝试将 err 转换为 ReplyErr
|
|
func ToReplyErr(err error) (ReplyErr, bool) {
|
|
if err == nil {
|
|
return nil, false
|
|
}
|
|
|
|
e, ok := err.(ReplyErr)
|
|
return e, ok
|
|
}
|