func()

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)
}