40 lines
872 B
JavaScript
40 lines
872 B
JavaScript
export default class Api {
|
|
|
|
constructor({server, processPage, timezone, errorCode, lang}) {
|
|
this.server = server;
|
|
this.processPage = processPage;
|
|
this.timezone = timezone;
|
|
this.errorCode = errorCode;
|
|
this.lang = lang;
|
|
}
|
|
|
|
async get(action, params = {}) {
|
|
const requestParams = {
|
|
...params,
|
|
a: action,
|
|
t: this.timezone
|
|
};
|
|
|
|
const url = new URL(this.processPage, this.server);
|
|
url.search = new URLSearchParams(requestParams).toString();
|
|
|
|
const request = await fetch(url, {
|
|
method: 'GET',
|
|
headers: {'Content-Type': 'application/json'}
|
|
});
|
|
|
|
if(!request.ok) {
|
|
throw new Error('Error HTTP ' + request.status + ': ' + request.statusText);
|
|
}
|
|
|
|
const response = await request.json();
|
|
response.desc = this.lang.parse(response.desc);
|
|
|
|
if(response.result == this.errorCode) {
|
|
throw response.desc;
|
|
}
|
|
|
|
return response.data;
|
|
}
|
|
}
|