signingPolicy.ts 1.3 KB

123456789101112131415161718192021222324252627282930
  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 { ServiceClientCredentials } from "../credentials/serviceClientCredentials";
  4. import { HttpOperationResponse } from "../httpOperationResponse";
  5. import { WebResource } from "../webResource";
  6. import { BaseRequestPolicy, RequestPolicyFactory, RequestPolicy, RequestPolicyOptions } from "./requestPolicy";
  7. export function signingPolicy(authenticationProvider: ServiceClientCredentials): RequestPolicyFactory {
  8. return {
  9. create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => {
  10. return new SigningPolicy(nextPolicy, options, authenticationProvider);
  11. }
  12. };
  13. }
  14. export class SigningPolicy extends BaseRequestPolicy {
  15. constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions, public authenticationProvider: ServiceClientCredentials) {
  16. super(nextPolicy, options);
  17. }
  18. signRequest(request: WebResource): Promise<WebResource> {
  19. return this.authenticationProvider.signRequest(request);
  20. }
  21. public sendRequest(request: WebResource): Promise<HttpOperationResponse> {
  22. return this.signRequest(request).then(nextRequest => this._nextPolicy.sendRequest(nextRequest));
  23. }
  24. }