UNPKG

1.44 kBJavaScriptView Raw
1var middleware = require('./middleware')
2var extend = require('../extend')
3var obfuscateUrlPassword = require('../obfuscateUrlPassword')
4var createDebug = require('debug')
5var debugRequest = createDebug('httpism:request')
6var debugResponse = createDebug('httpism:response')
7var isStream = require('../isStream')
8
9function logRequest (request) {
10 if (debugRequest.enabled) {
11 debugRequest(prepareForLogging(request))
12 }
13}
14
15function logResponse (response) {
16 if (!response.redirectResponse) {
17 debugResponse(prepareForLogging(response))
18 }
19}
20
21function prepareForLogging (r) {
22 return removeUndefined({
23 method: r.method,
24 url: r.url && obfuscateUrlPassword(r.url),
25 headers: r.headers,
26 body: isStream(r.body) ? '[Stream]' : r.body,
27 statusCode: r.statusCode,
28 statusText: r.statusText
29 })
30}
31
32function removeUndefined (obj) {
33 Object.keys(obj).map(function (key) {
34 if (typeof obj[key] === 'undefined') {
35 delete obj[key]
36 }
37 })
38
39 return obj
40}
41
42module.exports = middleware('log', function (request, next) {
43 logRequest(request)
44
45 var promise = next()
46
47 if (debugResponse.enabled) {
48 return promise.then(function (response) {
49 logResponse(response)
50 return response
51 }, function (e) {
52 var res = extend({}, e)
53 logResponse(res)
54 throw e
55 })
56 } else {
57 return promise
58 }
59})
60
61module.exports.logRequest = logRequest
62module.exports.logResponse = logResponse