state_by_date lag
by nrenner
JavaScript
// state_by_date lag
// returned sequence for current time = state.txt - 1
function log(msg) {
document.body.innerHTML += msg + '<br/>';
window.scrollTo(0, document.body.scrollHeight);
}
function state(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send();
var sequence = parseInt(xhr.responseText.replace(/\s+/g, ''));
log('' + sequence + ', now = ' + new Date().toLocaleString()
+ ', url = ' + url.substr(url.lastIndexOf('/')));
return sequence;
}
function stateByTxt() {
return state("http://overpass-api.de/augmented_diffs/state.txt");
}
function stateByDate() {
var osmBase = new Date().toISOString().substr(0, 19).replace(/:/g, '\\:') + 'Z';
var url = 'http://overpass-api.de/api/augmented_state_by_date?osm_base=' + osmBase;
return state(url);
}
function diff(sequence) {
var xhr = new XMLHttpRequest();
xhr.open('GET', "http://overpass-api.de/api/augmented_diff?id=" + sequence, false);
xhr.send();
var msg = sequence + ': ';
if (xhr.responseXML) {
msg += 'osm_base = ' + xhr.responseXML.getElementsByTagName("meta")[0].getAttribute('osm_base').replace(/\\:/g, ':');
msg += ', format = ' + xhr.responseXML.documentElement.getAttribute('format');
} else {
msg += 'ERROR - XML null';
}
msg += ', length: ' + xhr.responseText.length;
log(msg);
}
function next() {
var sequence = Math.max(stateByTxt(), stateByDate());
//var sequence = stateByTxt();
if (oldSequence !== sequence) {
diff(sequence);
oldSequence = sequence;
}
window.setTimeout(next, 5000);
}
var oldSequence = -1;
next();