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