|
2 | 2 | // Licensed under the MIT license. |
3 | 3 |
|
4 | 4 | import { AppConfigurationClient, AppConfigurationClientOptions } from "@azure/app-configuration"; |
| 5 | +import { PipelinePolicy, PipelineRequest, SendRequest } from "@azure/core-rest-pipeline"; |
5 | 6 | import { TokenCredential } from "@azure/identity"; |
6 | 7 | import { AzureAppConfiguration } from "./AzureAppConfiguration.js"; |
7 | 8 | import { AzureAppConfigurationImpl } from "./AzureAppConfigurationImpl.js"; |
@@ -96,6 +97,27 @@ export async function loadFromCdn( |
96 | 97 | const emptyTokenCredential: TokenCredential = { |
97 | 98 | getToken: async () => ({ token: "", expiresOnTimestamp: 0 }) |
98 | 99 | }; |
| 100 | + // the api version supports sas token authentication |
| 101 | + const apiVersion = "2024-09-01-preview"; |
| 102 | + const policyName = "CdnRequestApiVersionPolicy"; |
| 103 | + |
| 104 | + const apiVersionPolicy: PipelinePolicy = { |
| 105 | + name: policyName, |
| 106 | + sendRequest: async (request: PipelineRequest, next: SendRequest) => { |
| 107 | + const url = new URL(request.url); |
| 108 | + url.searchParams.set("api-version", apiVersion); |
| 109 | + request.url = url.toString(); |
| 110 | + return next(request); |
| 111 | + }, |
| 112 | + }; |
| 113 | + |
| 114 | + if (appConfigOptions === undefined) { |
| 115 | + appConfigOptions = { clientOptions: {}}; |
| 116 | + } |
| 117 | + const policies = appConfigOptions.clientOptions?.additionalPolicies || []; |
| 118 | + policies.push({policy: apiVersionPolicy, position: "perCall"}); |
| 119 | + appConfigOptions.clientOptions = { ...appConfigOptions.clientOptions, additionalPolicies: policies}; |
| 120 | + |
99 | 121 | return await load(cdnEndpoint, emptyTokenCredential, appConfigOptions); |
100 | 122 | } |
101 | 123 |
|
|
0 commit comments