UNPKG

1.35 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 { ServiceClientCredentials } from "../credentials/serviceClientCredentials";
5import { HttpOperationResponse } from "../httpOperationResponse";
6import { WebResourceLike } from "../webResource";
7import {
8 BaseRequestPolicy,
9 RequestPolicyFactory,
10 RequestPolicy,
11 RequestPolicyOptionsLike,
12} from "./requestPolicy";
13
14export function signingPolicy(
15 authenticationProvider: ServiceClientCredentials
16): RequestPolicyFactory {
17 return {
18 create: (nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike) => {
19 return new SigningPolicy(nextPolicy, options, authenticationProvider);
20 },
21 };
22}
23
24export class SigningPolicy extends BaseRequestPolicy {
25 constructor(
26 nextPolicy: RequestPolicy,
27 options: RequestPolicyOptionsLike,
28 public authenticationProvider: ServiceClientCredentials
29 ) {
30 super(nextPolicy, options);
31 }
32
33 signRequest(request: WebResourceLike): Promise<WebResourceLike> {
34 return this.authenticationProvider.signRequest(request);
35 }
36
37 public sendRequest(request: WebResourceLike): Promise<HttpOperationResponse> {
38 return this.signRequest(request).then((nextRequest) =>
39 this._nextPolicy.sendRequest(nextRequest)
40 );
41 }
42}