class PeriodicRequest {
  constructor(interval, callback, err_callback) {
    this.error = false;
    this.timer = undefined;
    this.result = undefined;
    this.interval = interval;
    this.callback = callback;
    this.err_callback = err_callback;
  }

  request(url) {
    app.get(url, (msg) => {
      this.result = msg;
      this.error = false;
      this.callback(msg);
    }, (Http) => {
      if (!Http.status || Http.status >= 400) {
        this.err_callback(Http.status);
        this.error = true;
      }
    });
  }

  stopRequesting() {
    this.result = undefined;
    clearInterval(this.timer);
  }

  startRequesting(url) {
    this.stopRequesting();
    this.timer = window.setInterval(function() {
      this.request(url);
    }.bind(this), this.interval);
  }
}