mirror of
https://github.com/1f349/go-webdav.git
synced 2024-12-22 08:14:15 +00:00
internal: read response body on error
This commit is contained in:
parent
a892cc58df
commit
30eac28d2b
@ -77,9 +77,21 @@ func (c *Client) Do(req *http.Request) (*http.Response, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if resp.StatusCode/100 != 2 {
|
if resp.StatusCode/100 != 2 {
|
||||||
// TODO: if body is plaintext, read it and populate the error message
|
var wrappedErr error
|
||||||
resp.Body.Close()
|
if strings.HasPrefix(resp.Header.Get("Content-Type"), "text/") {
|
||||||
return nil, &HTTPError{Code: resp.StatusCode}
|
// TODO: if body is plaintext, read it and populate the error message
|
||||||
|
lr := io.LimitedReader{R: resp.Body, N: 1024}
|
||||||
|
var buf bytes.Buffer
|
||||||
|
io.Copy(&buf, &lr)
|
||||||
|
resp.Body.Close()
|
||||||
|
if s := strings.TrimSpace(buf.String()); s != "" {
|
||||||
|
if lr.N == 0 {
|
||||||
|
s += " […]"
|
||||||
|
}
|
||||||
|
wrappedErr = fmt.Errorf("%v", s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, &HTTPError{Code: resp.StatusCode, Err: wrappedErr}
|
||||||
}
|
}
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user