WrapHTTPError wraps err in a *StatusError carrying the HTTP status code and parsed Retry-After header from resp. Returns err unchanged if statusCode < 400 or err is nil. Pass resp=nil when no *http.Response is available.
(statusCode int, resp *http.Response, err error)
| 50 | // parsed Retry-After header from resp. Returns err unchanged if statusCode < 400 |
| 51 | // or err is nil. Pass resp=nil when no *http.Response is available. |
| 52 | func WrapHTTPError(statusCode int, resp *http.Response, err error) error { |
| 53 | if err == nil || statusCode < 400 { |
| 54 | return err |
| 55 | } |
| 56 | var retryAfter time.Duration |
| 57 | if resp != nil { |
| 58 | retryAfter = parseRetryAfterHeader(resp.Header.Get("Retry-After")) |
| 59 | } |
| 60 | return &StatusError{ |
| 61 | StatusCode: statusCode, |
| 62 | RetryAfter: retryAfter, |
| 63 | Err: err, |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | // Default fallback configuration. |
| 68 | const ( |