(function() {
var oldOpen = window.XMLHttpRequest.prototype.open;
var oldSend = window.XMLHttpRequest.prototype.send;
function newOpen(method, url, async, user, password) {
this._storedUrl = url;
return oldOpen.apply(this, arguments);
}
function newSend(data) {
if (this.onload) {
this._storedOnload = this.onload;
}
this.onload = newOnload;
return oldSend.apply(this, arguments);
}
function newOnload() {
if (
this._storedUrl.startsWith(
window.location.protocol + '//' + window.location.host,
) ||
!this._storedUrl.startsWith('http') // For relative paths
) {
var bulletFooterText = this.getResponseHeader('X-bullet-footer-text');
if (bulletFooterText) {
setTimeout(() => {
var oldHtml = document
.getElementById('bullet-footer')
.innerHTML.split('
');
var header = oldHtml[0];
oldHtml = oldHtml.slice(1, oldHtml.length);
var newHtml = oldHtml.concat(JSON.parse(bulletFooterText));
newHtml = newHtml.slice(newHtml.length - 10, newHtml.length); // rotate through 10 most recent
document.getElementById(
'bullet-footer',
).innerHTML = `${header}
${newHtml.join('
')}`;
}, 0);
}
var bulletConsoleText = this.getResponseHeader('X-bullet-console-text');
if (bulletConsoleText && typeof console !== 'undefined' && console.log) {
setTimeout(() => {
JSON.parse(bulletConsoleText).forEach(message => {
if (console.groupCollapsed && console.groupEnd) {
console.groupCollapsed('Uniform Notifier');
console.log(message);
console.groupEnd();
} else {
console.log(message);
}
});
}, 0);
}
}
if (this._storedOnload) {
return this._storedOnload.apply(this, arguments);
}
}
window.XMLHttpRequest.prototype.open = newOpen;
window.XMLHttpRequest.prototype.send = newSend;
})();