UNPKG

1.28 kBPlain TextView Raw
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License. See License.txt in the project root for license information.
3
4import { HttpOperationResponse } from "../httpOperationResponse";
5import * as utils from "../util/utils";
6import { WebResourceLike } from "../webResource";
7import {
8 BaseRequestPolicy,
9 RequestPolicy,
10 RequestPolicyFactory,
11 RequestPolicyOptionsLike,
12} from "./requestPolicy";
13
14export function generateClientRequestIdPolicy(
15 requestIdHeaderName = "x-ms-client-request-id"
16): RequestPolicyFactory {
17 return {
18 create: (nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike) => {
19 return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);
20 },
21 };
22}
23
24export class GenerateClientRequestIdPolicy extends BaseRequestPolicy {
25 constructor(
26 nextPolicy: RequestPolicy,
27 options: RequestPolicyOptionsLike,
28 private _requestIdHeaderName: string
29 ) {
30 super(nextPolicy, options);
31 }
32
33 public sendRequest(request: WebResourceLike): Promise<HttpOperationResponse> {
34 if (!request.headers.contains(this._requestIdHeaderName)) {
35 request.headers.set(this._requestIdHeaderName, utils.generateUuid());
36 }
37 return this._nextPolicy.sendRequest(request);
38 }
39}