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();