@hom3chuk/tektek
Version:
A library for detecting technologies used within HTTP Archive (HAR)
173 lines (172 loc) • 6.1 kB
JavaScript
export var getRoot = function (har) {
var res = null;
var entries = har.log.entries;
for (var i = 0; i < entries.length; i++) {
if ((entries[i].response.status === 200 || entries[i].response.status === 304) && entries[i].response.content.mimeType === 'text/html') {
return entries[i];
}
}
return res;
};
export var getRootBody = function (har) {
var res = null;
var root = getRoot(har);
if (root) {
res = root.response.content.text;
}
return res;
};
export var getRootHeaders = function (har) {
var res = null;
var root = getRoot(har);
if (root) {
res = root.response.headers;
}
return res;
};
export var rootBodyContains = function (har, value) {
var res = false;
var rootBody = getRootBody(har);
if (rootBody.indexOf(value) !== -1) {
return true;
}
return res;
};
export var rootHeaderEquals = function (har, header, value) {
var res = false;
var rootHeaders = getRootHeaders(har);
for (var i = 0; i < rootHeaders.length; i++) {
if (rootHeaders[i].name.toLowerCase() === header.toLowerCase() && rootHeaders[i].value.toLowerCase() === value.toLowerCase()) {
return true;
}
}
return res;
};
export var anyResourceHeaderEquals = function (har, header, value) {
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
var currentHeaders = har.log.entries[i].response.headers;
for (var j = 0; j < currentHeaders.length; j++) {
if (currentHeaders[j].name.toLowerCase() === header.toLowerCase() && currentHeaders[j].value.toLowerCase() === value.toLowerCase()) {
return true;
}
}
}
return res;
};
export var anyResourceHeaderContains = function (har, header, value) {
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
var currentHeaders = har.log.entries[i].response.headers;
for (var j = 0; j < currentHeaders.length; j++) {
if ((currentHeaders[j].name.toLowerCase() === header.toLowerCase())
&& (currentHeaders[j].value.toLowerCase().indexOf(value.toLowerCase()) !== -1)) {
return true;
}
}
}
return res;
};
export var anyCssResourceContentContains = function (har, value, searchLimit) {
if (searchLimit === void 0) { searchLimit = undefined; }
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
if (har.log.entries[i].response.content.mimeType.toLowerCase() !== 'text/css') {
continue;
}
if (har.log.entries[i].response.content.text &&
((searchLimit && har.log.entries[i].response.content.text.substring(0, searchLimit).indexOf(value) !== -1)
|| (!searchLimit && har.log.entries[i].response.content.text.indexOf(value) !== -1))) {
return true;
}
}
return res;
};
export var anyJavascriptResourceContentContains = function (har, value, searchLimit) {
if (searchLimit === void 0) { searchLimit = undefined; }
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
if (har.log.entries[i].response.content.mimeType.toLowerCase() !== 'text/javascript') {
continue;
}
if (har.log.entries[i].response.content.text &&
((searchLimit && har.log.entries[i].response.content.text.substring(0, searchLimit).indexOf(value) !== -1)
|| (!searchLimit && har.log.entries[i].response.content.text.indexOf(value) !== -1))) {
return true;
}
}
return res;
};
export var anyResourceUrlContains = function (har, value) {
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
if (har.log.entries[i].request.url.toLowerCase().indexOf(value.toLowerCase()) !== -1) {
return true;
}
}
return res;
};
export var anyResourceUrlRegex = function (har, value) {
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
if (value.exec(har.log.entries[i].request.url.toLowerCase())) {
return true;
}
}
return res;
};
export var rootHeaderContains = function (har, header, value) {
var res = false;
var rootHeaders = getRootHeaders(har);
for (var i = 0; i < rootHeaders.length; i++) {
if ((rootHeaders[i].name.toLowerCase() === header.toLowerCase())
&& (rootHeaders[i].value.toLowerCase().indexOf(value.toLowerCase()) !== -1)) {
return true;
}
}
return res;
};
export var rootAnyHeaderContains = function (har, value) {
var res = false;
var rootHeaders = getRootHeaders(har);
for (var i = 0; i < rootHeaders.length; i++) {
if (rootHeaders[i].value.toLowerCase().indexOf(value.toLowerCase()) !== -1) {
return true;
}
}
return res;
};
export var rootHeaderExists = function (har, header) {
var res = false;
var rootHeaders = getRootHeaders(har);
for (var i = 0; i < rootHeaders.length; i++) {
if (rootHeaders[i].name.toLowerCase() === header.toLowerCase()) {
return true;
}
}
return res;
};
export var anyResourceHeaderExists = function (har, header) {
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
var currentHeaders = har.log.entries[i].response.headers;
for (var j = 0; j < currentHeaders.length; j++) {
if (currentHeaders[j].name.toLowerCase() === header.toLowerCase()) {
return true;
}
}
}
return res;
};
export var anyResourceAnyHeadersContain = function (har, value) {
var res = false;
for (var i = 0; i < har.log.entries.length; i++) {
var currentHeaders = har.log.entries[i].response.headers;
for (var j = 0; j < currentHeaders.length; j++) {
if (currentHeaders[j].value.toLowerCase().indexOf(value.toLowerCase()) !== -1) {
return true;
}
}
}
return res;
};