in network/client.go [256:313]
func (n *client) do(
ctx context.Context,
uri, method string,
bodyProvider common.ContentProvider,
requestType string,
headers http.Header,
) (*http.Response, error) {
url, err := n.url.Parse(uri)
if err != nil {
return nil, err
}
var body io.ReadCloser
if bodyProvider != nil {
body, err = bodyProvider.GetReader()
if err != nil {
return nil, fmt.Errorf("couldn't get request body: %w", err)
}
defer body.Close()
}
req, err := http.NewRequestWithContext(ctx, method, url.String(), body)
if err != nil {
err = fmt.Errorf("failed to create NewRequest: %w", err)
return nil, err
}
if bodyProvider != nil {
req.GetBody = func() (io.ReadCloser, error) {
return bodyProvider.GetReader()
}
if length, known := bodyProvider.GetContentLength(); known {
req.ContentLength = length
}
}
if headers != nil {
req.Header = headers
}
req.Header.Set("User-Agent", common.AppVersion.UserAgent())
if bodyProvider != nil {
req.Header.Set(common.ContentType, requestType)
}
n.ensureTLSConfig()
n.ensureTransportMaxAge()
res, err := n.requester.Do(req)
if err != nil {
return nil, err
}
n.checkBackoffRequest(req, res)
return res, nil
}