DB640/web/static/db640.js

32 lines
926 B
JavaScript
Raw Normal View History

// FIXME: This should be an absolute URL!
const DB640_API_BASE_URL = '/betriebsstellen/';
class RailwayInfraLookupError extends Error {}
class RailwayInfra {
constructor(payload) {
this.id = payload.ID;
this.code = payload.Code;
this.name = payload.Name;
}
static lookup(code) {
// FIXME: Use URL(code, DB640_API_BASE_URL) here!
let url = DB640_API_BASE_URL + encodeURI(code);
let options = {
method: 'GET',
headers: { 'Accept': 'application/json' }
};
return fetch(url, options)
.then(res => {
if (res.ok)
return res.json();
if (res.status == 404)
throw new RailwayInfraLookupError(res.statusText);
})
.then(payload => {
return Promise.resolve(new RailwayInfra(payload));
});
}
}