func (c *dockerClient) makeRequestToResolvedURL(ctx context.Context, method, url string, headers map[string][]string, stream io.Reader, streamLen int64, auth sendAuth, extraScope *authScope) (*http.Response, error) {
	req, err := http.NewRequest(method, url, stream)
	if err != nil {
		return nil, err
	}
	req = req.WithContext(ctx)
	if streamLen != -1 { // Do not blindly overwrite if streamLen == -1, http.NewRequest above can figure out the length of bytes.Reader and similar objects without us having to compute it.
		req.ContentLength = streamLen
	}
	req.Header.Set("Docker-Distribution-API-Version", "registry/2.0")
	for n, h := range headers {
		for _, hh := range h {
			req.Header.Add(n, hh)
		}
	}
	if c.sys != nil && c.sys.DockerRegistryUserAgent != "" {
		req.Header.Add("User-Agent", c.sys.DockerRegistryUserAgent)
	}
	if auth == v2Auth {
		if err := c.setupRequestAuth(req, extraScope); err != nil {
			return nil, err
		}
	}
	logrus.Debugf("%s %s", method, url)

	// Build the transport and do the request by using the clients tlsclientconfig
	return c.doHTTP(req)
}
func (c *dockerClient) makeRequestToResolvedURL(ctx context.Context, method, url string, headers map[string][]string, stream io.Reader, streamLen int64, auth sendAuth, extraScope *authScope) (*http.Response, error) {
	req, err := http.NewRequest(method, url, stream)
	if err != nil {
		return nil, err
	}
	req = req.WithContext(ctx)
	if streamLen != -1 { 
		req.ContentLength = streamLen
	}
	req.Header.Set("Docker-Distribution-API-Version", "registry/2.0")
	for n, h := range headers {
		for _, hh := range h {
			req.Header.Add(n, hh)
		}
	}
	if c.sys != nil && c.sys.DockerRegistryUserAgent != "" {
		req.Header.Add("User-Agent", c.sys.DockerRegistryUserAgent)
	}
	if auth == v2Auth {
		if err := c.setupRequestAuth(req, extraScope); err != nil {
			return nil, err
		}
	}
	logrus.Debugf("%s %s", method, url)

	
	return c.doHTTP(req)
}
func ( c * dockerClient ) makeRequestToResolvedURL ( ctx context . Context , method , url string , headers map [ string ] [ ] string , stream io . Reader , streamLen int64 , auth sendAuth , extraScope * authScope ) ( * http . Response , error ) { req , err := http . NewRequest ( method , url , stream ) if err != nil { return nil , err } req = req . WithContext ( ctx ) if streamLen != - 1 { // Do not blindly overwrite if streamLen == -1, http.NewRequest above can figure out the length of bytes.Reader and similar objects without us having to compute it. req . ContentLength = streamLen } req . Header . Set ( " " , " " ) for n , h := range headers { for _ , hh := range h { req . Header . Add ( n , hh ) } } if c . sys != nil && c . sys . DockerRegistryUserAgent != " " { req . Header . Add ( " " , c . sys . DockerRegistryUserAgent ) } if auth == v2Auth { if err := c . setupRequestAuth ( req , extraScope ) ; err != nil { return nil , err } } logrus . Debugf ( " " , method , url ) // Build the transport and do the request by using the clients tlsclientconfig return c . doHTTP ( req ) }
// makeRequestToResolvedURL creates and executes a http.Request with the specified parameters, adding authentication and TLS options for the Docker client.
// streamLen, if not -1, specifies the length of the data expected on stream.
// makeRequest should generally be preferred.
// TODO(runcom): too many arguments here, use a struct
makeRequestToResolvedURL creates and executes a http . Request with the specified parameters adding authentication and TLS options for the Docker client . streamLen if not - 1 specifies the length of the data expected on stream . makeRequest should generally be preferred . TODO ( runcom ) : too many arguments here use a struct