-
Notifications
You must be signed in to change notification settings - Fork 0
/
debugMiddleware.js
38 lines (33 loc) · 1.02 KB
/
debugMiddleware.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
export function DebugMiddleware() {
this.nextMiddleware = undefined;
const getHeaders = (headers) => {
const h = {};
for (var header of headers.entries()) {
h[header[0]] = header[1];
}
return h;
};
return {
execute: async (context) => {
console.debug('');
console.debug(`Request: ${context.request}`);
console.debug(JSON.stringify(context.options, null, 2));
await this.nextMiddleware.execute(context);
const resp = context.response.clone();
const headers = getHeaders(resp.headers);
console.debug('');
console.debug('Response headers:');
console.debug(JSON.stringify(headers, null, 2));
if (headers.hasOwnProperty('content-type') &&
headers['content-type'].startsWith('application/json') &&
resp.body) {
console.debug('');
console.debug('Response body:');
console.debug(JSON.stringify(await resp.json(), null, 2));
}
},
setNext: (next) => {
this.nextMiddleware = next;
}
}
}