diff --git a/client.go b/client.go index 305394c..02e94b5 100644 --- a/client.go +++ b/client.go @@ -74,6 +74,9 @@ func (c *Client) do(req *http.Request) (*http.Response, error) { hook.BeforeRequest(req) } resp, err := c.Client.Do(req) + if err != nil { + err = NetworkErr{error: err} + } for _, hook := range c.HttpHooks { hook.AfterRequest(resp, err) } diff --git a/items.go b/items.go index e977a9e..9e26f39 100644 --- a/items.go +++ b/items.go @@ -240,3 +240,14 @@ type PushLoginResponse struct { func (p PushLoginResponse) Ok() bool { return p.Ret == "0" && p.UUID != "" } + +type NetworkErr struct{ error } + +func (n NetworkErr) Unwrap() error { + return n.error +} + +func IsNetworkError(err error) bool { + _, ok := err.(NetworkErr) + return ok +}