generateClientRequestIdPolicy.ts 1.2 KB

12345678910111213141516171819202122232425262728
  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. import { HttpOperationResponse } from "../httpOperationResponse";
  4. import * as utils from "../util/utils";
  5. import { WebResource } from "../webResource";
  6. import { BaseRequestPolicy, RequestPolicy, RequestPolicyFactory, RequestPolicyOptions } from "./requestPolicy";
  7. export function generateClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id"): RequestPolicyFactory {
  8. return {
  9. create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => {
  10. return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);
  11. }
  12. };
  13. }
  14. export class GenerateClientRequestIdPolicy extends BaseRequestPolicy {
  15. constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions, private _requestIdHeaderName: string) {
  16. super(nextPolicy, options);
  17. }
  18. public sendRequest(request: WebResource): Promise<HttpOperationResponse> {
  19. if (!request.headers.contains(this._requestIdHeaderName)) {
  20. request.headers.set(this._requestIdHeaderName, utils.generateUuid());
  21. }
  22. return this._nextPolicy.sendRequest(request);
  23. }
  24. }