in internal/source/gitlab/client/client.go [47:86]
func NewClient(baseURL string, secretKey []byte, connectionTimeout, jwtTokenExpiry time.Duration, clientCfg config.HTTPClientCfg) (*Client, error) {
if len(baseURL) == 0 || len(secretKey) == 0 {
return nil, errors.New("GitLab API URL or API secret has not been provided")
}
parsedURL, err := url.Parse(baseURL)
if err != nil {
return nil, err
}
if connectionTimeout == 0 {
return nil, errors.New("GitLab HTTP client connection timeout has not been provided")
}
if jwtTokenExpiry == 0 {
return nil, errors.New("GitLab JWT token expiry has not been provided")
}
httpTransport := httptransport.NewTransportWithClientCert(clientCfg)
return &Client{
secretKey: secretKey,
baseURL: parsedURL,
httpClient: &http.Client{
Timeout: connectionTimeout,
Transport: httptransport.NewMeteredRoundTripper(
correlation.NewInstrumentedRoundTripper(
httpTransport,
correlation.WithClientName(transportClientName),
),
transportClientName,
metrics.DomainsSourceAPITraceDuration,
metrics.DomainsSourceAPICallDuration,
metrics.DomainsSourceAPIReqTotal,
httptransport.DefaultTTFBTimeout,
),
},
jwtTokenExpiry: jwtTokenExpiry,
}, nil
}