/usr/lib/nodejs/request-capture-har/request-capture-har.js is in node-request-capture-har 1.1.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | var fs = require('fs');
var pkg = require('./package.json');
function buildHarHeaders (headers) {
return headers ? Object.keys(headers).map(function (key) {
return {
name: key,
value: headers[key]
};
}) : [];
}
function buildPostData (body) {
return body ? {
mimeType: 'application/json',
text: body
} : null;
}
function HarWrapper (requestModule) {
this.requestModule = requestModule;
this.clear();
}
HarWrapper.prototype.request = function (options) {
Object.assign(options, { time: true });
var self = this;
return this.requestModule(options, function (err, incomingMessage, response) {
if (err) return;
self.entries.push(self.buildHarEntry(incomingMessage));
});
};
HarWrapper.prototype.clear = function () {
this.entries = [];
this.earliestTime = new Date(2099, 1, 1);
};
HarWrapper.prototype.saveHar = function (fileName) {
var httpArchive = {
log: {
version: '1.2',
creator: {name: 'request-capture-har', version: pkg.version},
pages: [{
startedDateTime: new Date(this.earliestTime).toISOString(),
id: 'request-capture-har',
title: 'request-capture-har',
pageTimings: { }
}],
entries: this.entries
}
};
fs.writeFileSync(fileName, JSON.stringify(httpArchive, null, 2));
};
HarWrapper.prototype.buildHarEntry = function (response) {
var startTimestamp = response.request.startTime;
var responseStartTimestamp = response.request.response.responseStartTime;
var endTimestamp = startTimestamp + response.elapsedTime;
var waitingTime = responseStartTimestamp - startTimestamp;
var totalTime = endTimestamp - startTimestamp;
var receiveTime = endTimestamp - responseStartTimestamp;
this.earliestTime = Math.min(new Date(startTimestamp), this.earliestTime);
var entry = {
startedDateTime: new Date(startTimestamp).toISOString(),
time: totalTime,
request: {
method: response.request.method,
url: response.request.uri.href,
httpVersion: 'HTTP/' + response.httpVersion,
cookies: [],
headers: buildHarHeaders(response.request.headers),
queryString: [],
postData: buildPostData(response.request.body),
headersSize: -1,
bodySize: -1
},
response: {
status: response.statusCode,
statusText: response.statusMessage,
httpVersion: 'HTTP/' + response.httpVersion,
cookies: [],
headers: buildHarHeaders(response.headers),
_transferSize: response.body.length,
content: {
size: response.body.length,
mimeType: response.headers['content-type']
},
redirectURL: '',
headersSize: -1,
bodySize: -1
},
cache: {},
timings: {
send: -1,
wait: waitingTime,
receive: receiveTime
}
};
return entry;
};
module.exports = HarWrapper;
|