75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
export default class Api {
|
|
|
|
constructor({server, processPage, timezone, csrfToken, errorCode, lang}) {
|
|
this.server = server;
|
|
this.processPage = processPage;
|
|
this.timezone = timezone;
|
|
this.csrfToken = csrfToken;
|
|
this.errorCode = errorCode;
|
|
this.lang = lang;
|
|
}
|
|
|
|
async get(sAction, asParams = {}) {
|
|
const oResponse = await this.request(sAction, asParams, 'GET');
|
|
return oResponse.data;
|
|
}
|
|
|
|
async getAsset(sAssetPath) {
|
|
const oRequest = await fetch(sAssetPath, {headers: {'Accept': 'application/geo+json'}});
|
|
|
|
if(!oRequest.ok) {
|
|
throw new Error('Error HTTP ' + oRequest.status + ': ' + oRequest.statusText);
|
|
}
|
|
|
|
return oRequest.json();
|
|
}
|
|
|
|
async post(sAction, asParams = {}) {
|
|
const oResponse = await this.request(sAction, asParams, 'POST');
|
|
return oResponse.data;
|
|
}
|
|
|
|
async request(sAction, asParams = {}, method = 'GET') {
|
|
const oUrl = new URL(this.processPage, this.server);
|
|
|
|
const sUrlParams = new URLSearchParams({
|
|
...asParams,
|
|
a: sAction,
|
|
t: this.timezone
|
|
}).toString();
|
|
|
|
const asOptions = {
|
|
method,
|
|
headers: {'Accept': 'application/json'}
|
|
};
|
|
|
|
if(method === 'GET') {
|
|
oUrl.search = sUrlParams;
|
|
}
|
|
else {
|
|
asOptions.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
|
|
asOptions.headers['X-CSRF-Token'] = this.csrfToken;
|
|
asOptions.body = sUrlParams;
|
|
}
|
|
|
|
const oRequest = await fetch(oUrl, asOptions);
|
|
|
|
if(!oRequest.ok) {
|
|
throw new Error('Error HTTP ' + oRequest.status + ': ' + oRequest.statusText);
|
|
}
|
|
|
|
const oResponse = await oRequest.json();
|
|
oResponse.desc_lang_text = this.lang.get(oResponse.desc_lang_id, oResponse.desc_lang_params);
|
|
|
|
if(oResponse.result == this.errorCode) {
|
|
const oError = new Error(oResponse.desc_lang_text);
|
|
oError.desc_lang_id = oResponse.desc_lang_id;
|
|
oError.desc_lang_params = oResponse.desc_lang_params;
|
|
oError.desc_lang_text = oResponse.desc_lang_text;
|
|
throw oError;
|
|
}
|
|
|
|
return oResponse;
|
|
}
|
|
}
|