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