From 69d1e90b40dc31d0484498be56773f3dacde94ad Mon Sep 17 00:00:00 2001 From: Paulo Gomes Date: Sat, 12 Feb 2022 13:44:48 +0000 Subject: [PATCH] Add WithTransport Signed-off-by: Paulo Gomes --- pkg/getter/getter.go | 8 ++++++++ pkg/getter/httpgetter.go | 13 ++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pkg/getter/getter.go b/pkg/getter/getter.go index 7f830bac7..4f8e9da52 100644 --- a/pkg/getter/getter.go +++ b/pkg/getter/getter.go @@ -18,6 +18,7 @@ package getter import ( "bytes" + "net/http" "time" "github.com/pkg/errors" @@ -43,6 +44,7 @@ type options struct { version string registryClient *registry.Client timeout time.Duration + transport *http.Transport } // Option allows specifying various settings configurable by the user for overriding the defaults @@ -119,6 +121,12 @@ func WithUntar() Option { } } +func WithTransport(transport *http.Transport) Option { + return func(opts *options) { + opts.transport = transport + } +} + // Getter is an interface to support GET to the specified URL. type Getter interface { // Get file content by url string diff --git a/pkg/getter/httpgetter.go b/pkg/getter/httpgetter.go index 454eb6eb6..e996c7e2f 100644 --- a/pkg/getter/httpgetter.go +++ b/pkg/getter/httpgetter.go @@ -106,10 +106,17 @@ func NewHTTPGetter(options ...Option) (Getter, error) { } func (g *HTTPGetter) httpClient() (*http.Client, error) { - transport := &http.Transport{ - DisableCompression: true, - Proxy: http.ProxyFromEnvironment, + var transport *http.Transport + + if g.opts.transport == nil { + transport = &http.Transport{ + DisableCompression: true, + Proxy: http.ProxyFromEnvironment, + } + } else { + transport = g.opts.transport } + if (g.opts.certFile != "" && g.opts.keyFile != "") || g.opts.caFile != "" { tlsConf, err := tlsutil.NewClientTLS(g.opts.certFile, g.opts.keyFile, g.opts.caFile) if err != nil {