in pkg/discovery/content/reader/reader.go [227:256]
func (r *reader) preadRemote(log zerolog.Logger, req *http.Request, client *http.Client, buf []byte) (int, error) {
log.Debug().Str("url", req.URL.String()).Str("range", req.Header.Get("Range")).Msg("reader preadRemote start")
statusCode := -1
s := time.Now()
defer func() {
log.Debug().Int("status", statusCode).Dur("duration", time.Since(s)).Msg("reader preadRemote stop")
}()
resp, err := client.Do(req)
if resp != nil {
statusCode = resp.StatusCode
}
if err != nil {
detailedErr := Error{resp, err}
log.Error().Err(detailedErr).Str("url", req.URL.String()).Str("range", req.Header.Get("Range")).Msg("reader preadRemote error")
return 0, detailedErr
}
defer func() {
if closeErr := resp.Body.Close(); closeErr != nil {
log.Error().Err(closeErr).Msg("reader preadRemote body close error")
}
}()
if resp.StatusCode != 200 && resp.StatusCode != 206 {
log.Error().Err(err).Int("status", resp.StatusCode).Msg("reader preadRemote error")
return 0, Error{resp, fmt.Errorf("unexpected response code: %d", resp.StatusCode)}
}
return io.ReadFull(resp.Body, buf)
}