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