package transport // import "github.com/docker/docker/pkg/plugins/transport" import ( "io" "net/http" "strings" ) // HTTPTransport holds an [http.RoundTripper] // and information about the scheme and address the transport // sends request to. type HTTPTransport struct { http.RoundTripper scheme string addr string } // NewHTTPTransport creates a new HTTPTransport. func NewHTTPTransport(r http.RoundTripper, scheme, addr string) *HTTPTransport { return &HTTPTransport{ RoundTripper: r, scheme: scheme, addr: addr, } } // NewRequest creates a new http.Request and sets the URL // scheme and address with the transport's fields. func (t HTTPTransport) NewRequest(path string, data io.Reader) (*http.Request, error) { if !strings.HasPrefix(path, "/") { path = "/" + path } req, err := http.NewRequest(http.MethodPost, path, data) if err != nil { return nil, err } req.Header.Add("Accept", VersionMimetype) req.URL.Scheme = t.scheme req.URL.Host = t.addr return req, nil }