Skip to content

Commit accef80

Browse files
dtejadavclaude
andcommitted
refactor: extract auth branching in provider_sdkv2 to reduce complexity headroom
providerConfigure was at cognitive complexity 10 (CI limit), leaving no room for future additions. Extracted API-key vs OAuth logic into a standalone buildAuthenticationObj helper, mirroring the same pattern applied to the framework provider. Brings providerConfigure to ~7. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 41e705a commit accef80

1 file changed

Lines changed: 19 additions & 33 deletions

File tree

providers/provider_sdkv2/provider.go

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,24 @@ func ValidateCredentialsAndConfig(apikey string, clientId string, clientSecret s
142142
}
143143

144144
// Provider Init Config.
145+
func buildAuthenticationObj(httpClient utils.HttpClientObj, backoffDefinition *backoff.ExponentialBackOff, apikey, url, apiVersion, accountName, clientId, clientSecret string, retryMaxElapsedTimeMinutes int) (*auth.AuthenticationObj, error) {
146+
base := auth.AuthenticationParametersObj{
147+
HTTPClient: httpClient,
148+
BackoffDefinition: backoffDefinition,
149+
EndpointURL: url,
150+
APIVersion: apiVersion,
151+
Logger: zapLogger,
152+
RetryMaxElapsedTimeSeconds: retryMaxElapsedTimeMinutes,
153+
}
154+
if apikey != "" {
155+
base.ApiKey = fmt.Sprintf("%v;runas=%v;", apikey, accountName)
156+
return auth.AuthenticateUsingApiKey(base)
157+
}
158+
base.ClientID = clientId
159+
base.ClientSecret = clientSecret
160+
return auth.Authenticate(base)
161+
}
162+
145163
func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
146164

147165
apikey := d.Get("api_key").(string)
@@ -210,39 +228,7 @@ func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}
210228
return nil, diag.FromErr(err)
211229
}
212230

213-
// If this variable is set, we're using API Key authentication
214-
// (previous/old authentication method)
215-
if apikey != "" {
216-
authParamsApiKey := &auth.AuthenticationParametersObj{
217-
HTTPClient: *httpClientObj,
218-
BackoffDefinition: backoffDefinition,
219-
EndpointURL: url,
220-
APIVersion: apiVersion,
221-
ClientID: "",
222-
ClientSecret: "",
223-
ApiKey: fmt.Sprintf("%v;runas=%v;", apikey, accountName),
224-
Logger: zapLogger,
225-
RetryMaxElapsedTimeSeconds: retryMaxElapsedTimeMinutes,
226-
}
227-
authenticate, err := auth.AuthenticateUsingApiKey(*authParamsApiKey)
228-
if err != nil {
229-
return nil, diag.FromErr(err)
230-
}
231-
return authenticate, diags
232-
}
233-
234-
authParamsOauth := &auth.AuthenticationParametersObj{
235-
HTTPClient: *httpClientObj,
236-
BackoffDefinition: backoffDefinition,
237-
EndpointURL: url,
238-
APIVersion: apiVersion,
239-
ClientID: clientId,
240-
ClientSecret: clientSecret,
241-
ApiKey: "",
242-
Logger: zapLogger,
243-
RetryMaxElapsedTimeSeconds: retryMaxElapsedTimeMinutes,
244-
}
245-
authenticate, err := auth.Authenticate(*authParamsOauth)
231+
authenticate, err := buildAuthenticationObj(*httpClientObj, backoffDefinition, apikey, url, apiVersion, accountName, clientId, clientSecret, retryMaxElapsedTimeMinutes)
246232
if err != nil {
247233
return nil, diag.FromErr(err)
248234
}

0 commit comments

Comments
 (0)