32 lines
926 B
JavaScript
32 lines
926 B
JavaScript
// 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));
|
|
});
|
|
}
|
|
} |