|
4 | 4 | package com.azure.ai.metricsadvisor; |
5 | 5 |
|
6 | 6 | import com.azure.ai.metricsadvisor.implementation.MetricsAdvisorClientImpl; |
| 7 | +import com.azure.ai.metricsadvisor.models.MetricsAdvisorKeyCredential; |
7 | 8 | import com.azure.core.annotation.Generated; |
8 | 9 | import com.azure.core.annotation.ServiceClientBuilder; |
9 | 10 | import com.azure.core.credential.TokenCredential; |
|
24 | 25 | import com.azure.core.util.ClientOptions; |
25 | 26 | import com.azure.core.util.Configuration; |
26 | 27 | import com.azure.core.util.CoreUtils; |
| 28 | +import com.azure.core.util.logging.ClientLogger; |
27 | 29 | import com.azure.core.util.serializer.JacksonAdapter; |
28 | 30 | import java.util.ArrayList; |
29 | 31 | import java.util.List; |
30 | 32 | import java.util.Map; |
| 33 | +import java.util.Objects; |
31 | 34 | import java.util.stream.Collectors; |
32 | 35 |
|
33 | 36 | /** A builder for creating a new instance of the MetricsAdvisorClient type. */ |
@@ -203,7 +206,6 @@ private MetricsAdvisorClientImpl buildInnerClient() { |
203 | 206 | return client; |
204 | 207 | } |
205 | 208 |
|
206 | | - @Generated |
207 | 209 | private HttpPipeline createHttpPipeline() { |
208 | 210 | Configuration buildConfiguration = |
209 | 211 | (configuration == null) ? Configuration.getGlobalConfiguration() : configuration; |
@@ -232,6 +234,16 @@ private HttpPipeline createHttpPipeline() { |
232 | 234 | policies.add(new CookiePolicy()); |
233 | 235 | if (tokenCredential != null) { |
234 | 236 | policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES)); |
| 237 | + } else if (!CoreUtils.isNullOrEmpty(metricsAdvisorKeyCredential.getKeys().getSubscriptionKey()) |
| 238 | + || !CoreUtils.isNullOrEmpty(metricsAdvisorKeyCredential.getKeys().getApiKey())) { |
| 239 | + HttpHeaders apiKeyHeaders = new HttpHeaders(); |
| 240 | + apiKeyHeaders.set(OCP_APIM_SUBSCRIPTION_KEY, metricsAdvisorKeyCredential.getKeys().getSubscriptionKey()); |
| 241 | + apiKeyHeaders.set(API_KEY, metricsAdvisorKeyCredential.getKeys().getApiKey()); |
| 242 | + policies.add(new AddHeadersPolicy(apiKeyHeaders)); |
| 243 | + } else { |
| 244 | + // Throw exception that credential cannot be null |
| 245 | + throw LOGGER.logExceptionAsError( |
| 246 | + new IllegalArgumentException("Missing credential information while building a client.")); |
235 | 247 | } |
236 | 248 | policies.addAll( |
237 | 249 | this.pipelinePolicies.stream() |
@@ -287,4 +299,25 @@ public MetricsAdvisorClientBuilder credential(TokenCredential tokenCredential) { |
287 | 299 | this.tokenCredential = tokenCredential; |
288 | 300 | return this; |
289 | 301 | } |
| 302 | + |
| 303 | + private static final ClientLogger LOGGER = new ClientLogger(MetricsAdvisorClientBuilder.class); |
| 304 | + private static final String OCP_APIM_SUBSCRIPTION_KEY = "Ocp-Apim-Subscription-Key"; |
| 305 | + private static final String API_KEY = "x-api-key"; |
| 306 | + |
| 307 | + private MetricsAdvisorKeyCredential metricsAdvisorKeyCredential = null; |
| 308 | + |
| 309 | + /** |
| 310 | + * Sets the {@link MetricsAdvisorKeyCredential} to use when authenticating HTTP requests for this |
| 311 | + * MetricsAdvisorClientBuilder. |
| 312 | + * |
| 313 | + * @param metricsAdvisorKeyCredential {@link MetricsAdvisorKeyCredential} API key credential |
| 314 | + * |
| 315 | + * @return The updated MetricsAdvisorClientBuilder object. |
| 316 | + * @throws NullPointerException If {@code metricsAdvisorKeyCredential} is null. |
| 317 | + */ |
| 318 | + public MetricsAdvisorClientBuilder credential(MetricsAdvisorKeyCredential metricsAdvisorKeyCredential) { |
| 319 | + this.metricsAdvisorKeyCredential = Objects.requireNonNull(metricsAdvisorKeyCredential, |
| 320 | + "'metricsAdvisorKeyCredential' cannot be null."); |
| 321 | + return this; |
| 322 | + } |
290 | 323 | } |
0 commit comments