func NewClient()

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
}