1 |
|
2 |
|
3 |
|
4 | import { HttpOperationResponse } from "../httpOperationResponse";
|
5 | import * as utils from "../util/utils";
|
6 | import { WebResourceLike } from "../webResource";
|
7 | import {
|
8 | BaseRequestPolicy,
|
9 | RequestPolicy,
|
10 | RequestPolicyFactory,
|
11 | RequestPolicyOptionsLike,
|
12 | } from "./requestPolicy";
|
13 |
|
14 | export 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 |
|
24 | export 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 | }
|