You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.6 KiB
81 lines
1.6 KiB
4 years ago
|
'use strict'
|
||
|
|
||
|
module.exports = {
|
||
|
mapHttpRequest,
|
||
|
reqSerializer
|
||
|
}
|
||
|
|
||
|
var rawSymbol = Symbol('pino-raw-req-ref')
|
||
|
var pinoReqProto = Object.create({}, {
|
||
|
id: {
|
||
|
enumerable: true,
|
||
|
writable: true,
|
||
|
value: ''
|
||
|
},
|
||
|
method: {
|
||
|
enumerable: true,
|
||
|
writable: true,
|
||
|
value: ''
|
||
|
},
|
||
|
url: {
|
||
|
enumerable: true,
|
||
|
writable: true,
|
||
|
value: ''
|
||
|
},
|
||
|
headers: {
|
||
|
enumerable: true,
|
||
|
writable: true,
|
||
|
value: {}
|
||
|
},
|
||
|
remoteAddress: {
|
||
|
enumerable: true,
|
||
|
writable: true,
|
||
|
value: ''
|
||
|
},
|
||
|
remotePort: {
|
||
|
enumerable: true,
|
||
|
writable: true,
|
||
|
value: ''
|
||
|
},
|
||
|
raw: {
|
||
|
enumerable: false,
|
||
|
get: function () {
|
||
|
return this[rawSymbol]
|
||
|
},
|
||
|
set: function (val) {
|
||
|
this[rawSymbol] = val
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
Object.defineProperty(pinoReqProto, rawSymbol, {
|
||
|
writable: true,
|
||
|
value: {}
|
||
|
})
|
||
|
|
||
|
function reqSerializer (req) {
|
||
|
// req.info is for hapi compat.
|
||
|
var connection = req.info || req.connection
|
||
|
const _req = Object.create(pinoReqProto)
|
||
|
_req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))
|
||
|
_req.method = req.method
|
||
|
// req.originalUrl is for expressjs compat.
|
||
|
if (req.originalUrl) {
|
||
|
_req.url = req.originalUrl
|
||
|
} else {
|
||
|
// req.url.path is for hapi compat.
|
||
|
_req.url = req.url ? (req.url.path || req.url) : undefined
|
||
|
}
|
||
|
_req.headers = req.headers
|
||
|
_req.remoteAddress = connection && connection.remoteAddress
|
||
|
_req.remotePort = connection && connection.remotePort
|
||
|
// req.raw is for hapi compat/equivalence
|
||
|
_req.raw = req.raw || req
|
||
|
return _req
|
||
|
}
|
||
|
|
||
|
function mapHttpRequest (req) {
|
||
|
return {
|
||
|
req: reqSerializer(req)
|
||
|
}
|
||
|
}
|