UNPKG

@azure-rest/core-client

Version:
49 lines 2.01 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { bearerTokenAuthenticationPolicy, createDefaultHttpClient, createPipelineFromOptions, } from "@azure/core-rest-pipeline"; import { isTokenCredential } from "@azure/core-auth"; import { apiVersionPolicy } from "./apiVersionPolicy.js"; import { keyCredentialAuthenticationPolicy } from "./keyCredentialAuthenticationPolicy.js"; let cachedHttpClient; /** * Adds a credential policy to the pipeline if a credential is provided. If none is provided, no policy is added. */ export function addCredentialPipelinePolicy(pipeline, endpoint, options = {}) { const { credential, clientOptions } = options; if (!credential) { return; } if (isTokenCredential(credential)) { const tokenPolicy = bearerTokenAuthenticationPolicy({ credential, scopes: clientOptions?.credentials?.scopes ?? `${endpoint}/.default`, }); pipeline.addPolicy(tokenPolicy); } else if (isKeyCredential(credential)) { if (!clientOptions?.credentials?.apiKeyHeaderName) { throw new Error(`Missing API Key Header Name`); } const keyPolicy = keyCredentialAuthenticationPolicy(credential, clientOptions?.credentials?.apiKeyHeaderName); pipeline.addPolicy(keyPolicy); } } /** * Creates a default rest pipeline to re-use accross Rest Level Clients */ export function createDefaultPipeline(endpoint, credential, options = {}) { const pipeline = createPipelineFromOptions(options); pipeline.addPolicy(apiVersionPolicy(options)); addCredentialPipelinePolicy(pipeline, endpoint, { credential, clientOptions: options }); return pipeline; } function isKeyCredential(credential) { return credential.key !== undefined; } export function getCachedDefaultHttpsClient() { if (!cachedHttpClient) { cachedHttpClient = createDefaultHttpClient(); } return cachedHttpClient; } //# sourceMappingURL=clientHelpers.js.map