Skip to content

Commit ce9f550

Browse files
use pipeline policy to ensure cdn request uses correct api version
1 parent 7503688 commit ce9f550

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/load.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT license.
33

44
import { AppConfigurationClient, AppConfigurationClientOptions } from "@azure/app-configuration";
5+
import { PipelinePolicy, PipelineRequest, SendRequest } from "@azure/core-rest-pipeline";
56
import { TokenCredential } from "@azure/identity";
67
import { AzureAppConfiguration } from "./AzureAppConfiguration.js";
78
import { AzureAppConfigurationImpl } from "./AzureAppConfigurationImpl.js";
@@ -96,6 +97,27 @@ export async function loadFromCdn(
9697
const emptyTokenCredential: TokenCredential = {
9798
getToken: async () => ({ token: "", expiresOnTimestamp: 0 })
9899
};
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+
99121
return await load(cdnEndpoint, emptyTokenCredential, appConfigOptions);
100122
}
101123

0 commit comments

Comments
 (0)