diff options
author | Nick Thomas <nick@gitlab.com> | 2021-08-13 14:50:02 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2021-08-13 14:50:02 +0000 |
commit | 51e7ed1be98c7cdc65078b604e2c46cd551d3c2e (patch) | |
tree | 5e7981aa66506c40376f64527a4644507b2e2a12 | |
parent | fa9e9ad01c410fc47f751e7aef2202928ac1a3ee (diff) | |
parent | 160dcb064412e53a638c4329a60feadaafb1ab48 (diff) | |
download | gitlab-shell-51e7ed1be98c7cdc65078b604e2c46cd551d3c2e.tar.gz |
Merge branch 'update/newclientopts' into 'main'
refactor: update usage of NewHTTPClient to NewHTTPClientWithOpts
Closes #484
See merge request gitlab-org/gitlab-shell!507
-rw-r--r-- | client/client_test.go | 3 | ||||
-rw-r--r-- | client/httpclient_test.go | 6 | ||||
-rw-r--r-- | internal/config/config.go | 12 | ||||
-rw-r--r-- | internal/config/config_test.go | 5 | ||||
-rw-r--r-- | internal/gitlabnet/client.go | 5 |
5 files changed, 22 insertions, 9 deletions
diff --git a/client/client_test.go b/client/client_test.go index bf45181..f2ecd6c 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -59,7 +59,8 @@ func TestClients(t *testing.T) { secret := "sssh, it's a secret" - httpClient := NewHTTPClient(url, tc.relativeURLRoot, tc.caFile, "", false, 1) + httpClient, err := NewHTTPClientWithOpts(url, tc.relativeURLRoot, tc.caFile, "", false, 1, nil) + require.NoError(t, err) client, err := NewGitlabNetClient("", "", secret, httpClient) require.NoError(t, err) diff --git a/client/httpclient_test.go b/client/httpclient_test.go index 5c1ebe3..f3643a0 100644 --- a/client/httpclient_test.go +++ b/client/httpclient_test.go @@ -17,7 +17,8 @@ import ( func TestReadTimeout(t *testing.T) { expectedSeconds := uint64(300) - client := NewHTTPClient("http://localhost:3000", "", "", "", false, expectedSeconds) + client, err := NewHTTPClientWithOpts("http://localhost:3000", "", "", "", false, expectedSeconds, nil) + require.NoError(t, err) require.NotNil(t, client) require.Equal(t, time.Duration(expectedSeconds)*time.Second, client.Client.Timeout) @@ -122,7 +123,8 @@ func TestRequestWithUserAgent(t *testing.T) { func setup(t *testing.T, username, password string, requests []testserver.TestRequestHandler) *GitlabNetClient { url := testserver.StartHttpServer(t, requests) - httpClient := NewHTTPClient(url, "", "", "", false, 1) + httpClient, err := NewHTTPClientWithOpts(url, "", "", "", false, 1, nil) + require.NoError(t, err) client, err := NewGitlabNetClient(username, password, "", httpClient) require.NoError(t, err) diff --git a/internal/config/config.go b/internal/config/config.go index 5aa99de..f69a6c8 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -58,6 +58,7 @@ type Config struct { Server ServerConfig `yaml:"sshd"` httpClient *client.HttpClient + httpClientErr error httpClientOnce sync.Once } @@ -95,16 +96,21 @@ func (c *Config) ApplyGlobalState() { } } -func (c *Config) HttpClient() *client.HttpClient { +func (c *Config) HttpClient() (*client.HttpClient, error) { c.httpClientOnce.Do(func() { - client := client.NewHTTPClient( + client, err := client.NewHTTPClientWithOpts( c.GitlabUrl, c.GitlabRelativeURLRoot, c.HttpSettings.CaFile, c.HttpSettings.CaPath, c.HttpSettings.SelfSignedCert, c.HttpSettings.ReadTimeoutSeconds, + nil, ) + if err != nil { + c.httpClientErr = err + return + } tr := client.Transport client.Transport = promhttp.InstrumentRoundTripperDuration(metrics.HttpRequestDuration, tr) @@ -112,7 +118,7 @@ func (c *Config) HttpClient() *client.HttpClient { c.httpClient = client }) - return c.httpClient + return c.httpClient, c.httpClientErr } // NewFromDirExternal returns a new config from a given root dir. It also applies defaults appropriate for diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 5fa8e66..699a261 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -29,9 +29,10 @@ func TestHttpClient(t *testing.T) { url := testserver.StartHttpServer(t, []testserver.TestRequestHandler{}) config := &Config{GitlabUrl: url} - client := config.HttpClient() + client, err := config.HttpClient() + require.NoError(t, err) - _, err := client.Get("http://host.com/path") + _, err = client.Get("http://host.com/path") require.NoError(t, err) ms, err := prometheus.DefaultGatherer.Gather() diff --git a/internal/gitlabnet/client.go b/internal/gitlabnet/client.go index c0b72c4..39c3320 100644 --- a/internal/gitlabnet/client.go +++ b/internal/gitlabnet/client.go @@ -15,7 +15,10 @@ var ( ) func GetClient(config *config.Config) (*client.GitlabNetClient, error) { - httpClient := config.HttpClient() + httpClient, err := config.HttpClient() + if err != nil { + return nil, err + } if httpClient == nil { return nil, fmt.Errorf("Unsupported protocol") |