import (
"bytes"
"context"
- "errors"
"fmt"
"io"
"net/http"
return req
}
+type ErrBadResponse struct {
+ Msg string
+ Response *http.Response
+}
+
+func (me ErrBadResponse) Error() string {
+ return me.Msg
+}
+
func recvPartResult(buf io.Writer, part requestPart) error {
result := <-part.result
if result.err != nil {
case http.StatusPartialContent:
case http.StatusOK:
if part.e.Start != 0 {
- return errors.New("got status ok but request was at offset")
+ return ErrBadResponse{"got status ok but request was at offset", result.resp}
}
default:
- return fmt.Errorf("unhandled response status code (%v)", result.resp.StatusCode)
+ return ErrBadResponse{
+ fmt.Sprintf("unhandled response status code (%v)", result.resp.StatusCode),
+ result.resp,
+ }
}
copied, err := io.Copy(buf, result.resp.Body)
if err != nil {