UNPKG

@softonic/http-log-format

Version:

Functions to transform native Node.js HTTP requests and responses to the Softonic HTTP log format

121 lines (112 loc) 2.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildOutgoingRequest = buildOutgoingRequest; exports.buildIncomingRequest = buildIncomingRequest; exports.buildIncomingResponse = buildIncomingResponse; exports.buildOutgoingResponse = buildOutgoingResponse; var _http = _interopRequireDefault(require("http")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function buildOutgoingRequest({ method, host, port, path, headers = {}, timestamp, localAddress, localPort, remoteAddress, remotePort }) { const request = new _http.default.ClientRequest({ method, protocol: 'http:', host, port, path, headers, // Prevent a real request agent: null, createConnection: () => {} }); // Custom property that we use to track the response time request.timestamp = timestamp; request.socket = { localAddress, localPort, remoteAddress, remotePort }; return request; } function buildIncomingRequest({ httpVersion, method, host, port, path, headers = {}, timestamp, localAddress, localPort, remoteAddress, remotePort }) { const socket = { localAddress, localPort, remoteAddress, remotePort }; const realHeaders = { ...headers, host: `${host}:${port}` }; const request = new _http.default.IncomingMessage(socket); Object.assign(request, { method, url: path, httpVersion, headers: realHeaders }); // Custom property that we use to track the response time request.timestamp = timestamp; return request; } function buildIncomingResponse({ statusCode, headers, responseTime, timestamp }) { const socket = {}; const response = new _http.default.IncomingMessage(socket); Object.assign(response, { headers, statusCode, timestamp, responseTime }); response.statusCode = statusCode; return response; } function buildOutgoingResponse({ statusCode, headers, responseTime, timestamp }) { const req = {}; const response = new _http.default.ServerResponse(req); Object.keys(headers).forEach(headerName => { response.setHeader(headerName, headers[headerName]); }); response.flushHeaders(); Object.assign(response, { statusCode, // Custom properties that we use to track the response time timestamp, responseTime }); return response; } //# sourceMappingURL=HttpBuilders.js.map