summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2021-08-13 14:50:02 +0000
committerNick Thomas <nick@gitlab.com>2021-08-13 14:50:02 +0000
commit51e7ed1be98c7cdc65078b604e2c46cd551d3c2e (patch)
tree5e7981aa66506c40376f64527a4644507b2e2a12
parentfa9e9ad01c410fc47f751e7aef2202928ac1a3ee (diff)
parent160dcb064412e53a638c4329a60feadaafb1ab48 (diff)
downloadgitlab-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.go3
-rw-r--r--client/httpclient_test.go6
-rw-r--r--internal/config/config.go12
-rw-r--r--internal/config/config_test.go5
-rw-r--r--internal/gitlabnet/client.go5
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")