in ci/internal/mitre/client.go [67:107]
func NewClient(cnaUUID, cnaShortname, apiUser, apiKey string, opts ...ClientOption) (*Client, error) {
client := &Client{
cnaUUID: cnaUUID,
cnaShortname: cnaShortname,
apiUser: apiUser,
apiKey: apiKey,
baseURL: DefaultBaseURL,
retries: DefaultRetries,
}
for i, opt := range opts {
if err := opt(client); err != nil {
return nil, fmt.Errorf("applying option #%d: %w", i+1, err)
}
}
if client.cnaUUID == "" {
return nil, errors.New("cnaUUID is empty")
}
if client.cnaShortname == "" {
return nil, errors.New("cnaShortname is empty")
}
if client.apiUser == "" {
return nil, errors.New("apiUser is empty")
}
if client.apiKey == "" {
return nil, errors.New("apiKey is empty")
}
rhc := retryablehttp.NewClient()
rhc.RetryMax = client.retries
rhc.HTTPClient.Timeout = DefaultTimeout
rhc.Logger = slog.Default()
client.client = rhc
return client, nil
}