blob: 04f287b74b663ad521620adc8f671696e85e4992 [file] [log] [blame]
var logBuffer = [];
var loggingUrl = 'http://localhost:3001';
var intervalTime = 5000; //send every 5 seconds
var testing = false;
var echo = true;
var msg = 'DRAPER LOG: ';
function timerMethod() {
if (logBuffer.length) {
if (echo) {
console.log(msg + 'sent ' + logBuffer.length + ' logs to - ' + loggingUrl)
}
if (!testing) {
XHR(loggingUrl + '/send_log', logBuffer, function(d) {
logBuffer = [];
})
} else {
logBuffer = [];
}
} else {
if (echo) {
console.log(msg + 'no log sent, buffer empty.')
}
}
}
var timerId = setInterval(timerMethod, intervalTime);
self.addEventListener('message', function(e) {
var data = e.data;
switch (data.cmd) {
case 'setLoggingUrl':
loggingUrl = data.msg;
break;
case 'sendMsg':
logBuffer.push(data.msg)
break;
case 'setTesting':
if (data.msg) {
var msg = 'DRAPER LOG: (TESTING) ';
} else {
var msg = 'DRAPER LOG: ';
}
testing = data.msg;
break;
case 'setEcho':
echo = data.msg;
break;
case 'sendBuffer':
sendBuffer();
break;
};
}, false);
function sendBuffer() {
// method to force send the buffer
timerMethod();
if (echo) {
console.log(msg + ' buffer sent')
}
}
//simple XHR request in pure raw JavaScript
function XHR(url, log, callback) {
var xhr;
if(typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();
else {
var versions = ["MSXML2.XmlHttp.5.0",
"MSXML2.XmlHttp.4.0",
"MSXML2.XmlHttp.3.0",
"MSXML2.XmlHttp.2.0",
"Microsoft.XmlHttp"]
for(var i = 0, len = versions.length; i < len; i++) {
try {
xhr = new ActiveXObject(versions[i]);
break;
}
catch(e){}
} // end for
}
xhr.onreadystatechange = ensureReadiness;
function ensureReadiness() {
if(xhr.readyState < 4) {
return;
}
if(xhr.status !== 200) {
return;
}
// all is well
if(xhr.readyState === 4) {
callback(xhr);
}
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(log));
}