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