UNPKG

1.46 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 { HttpOperationResponse } from "../httpOperationResponse";
5import { WebResourceLike } from "../webResource";
6import {
7 BaseRequestPolicy,
8 RequestPolicy,
9 RequestPolicyFactory,
10 RequestPolicyOptionsLike,
11} from "./requestPolicy";
12
13export function logPolicy(logger: any = console.log): RequestPolicyFactory {
14 return {
15 create: (nextPolicy: RequestPolicy, options: RequestPolicyOptionsLike) => {
16 return new LogPolicy(nextPolicy, options, logger);
17 },
18 };
19}
20
21export class LogPolicy extends BaseRequestPolicy {
22 logger?: any;
23
24 constructor(
25 nextPolicy: RequestPolicy,
26 options: RequestPolicyOptionsLike,
27 logger: any = console.log
28 ) {
29 super(nextPolicy, options);
30 this.logger = logger;
31 }
32
33 public sendRequest(request: WebResourceLike): Promise<HttpOperationResponse> {
34 return this._nextPolicy.sendRequest(request).then((response) => logResponse(this, response));
35 }
36}
37
38function logResponse(
39 policy: LogPolicy,
40 response: HttpOperationResponse
41): Promise<HttpOperationResponse> {
42 policy.logger(`>> Request: ${JSON.stringify(response.request, undefined, 2)}`);
43 policy.logger(`>> Response status code: ${response.status}`);
44 const responseBody = response.bodyAsText;
45 policy.logger(`>> Body: ${responseBody}`);
46 return Promise.resolve(response);
47}