|
|
@@ -1,9 +1,9 @@
|
|
|
-const logger = require('./logger');
|
|
|
-const axios = require('axios').default;
|
|
|
+import axios from "axios";
|
|
|
+import logger from "./logger.mjs";
|
|
|
|
|
|
-const BackendApi = function(config, token) {
|
|
|
+const BackendApi = function (config, token) {
|
|
|
this.config = config;
|
|
|
- this.token = token;
|
|
|
+ this.token = token;
|
|
|
|
|
|
this.axios = axios.create({
|
|
|
baseURL: config.baseUrl,
|
|
|
@@ -14,26 +14,24 @@ const BackendApi = function(config, token) {
|
|
|
/**
|
|
|
* @param {string} token
|
|
|
*/
|
|
|
-BackendApi.prototype.setToken = function(token) {
|
|
|
+BackendApi.prototype.setToken = function (token) {
|
|
|
this.token = token;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @param {bool} returnOnError
|
|
|
*/
|
|
|
-BackendApi.prototype._prepareOptions = function(returnOnError) {
|
|
|
- let options = {
|
|
|
+BackendApi.prototype._prepareOptions = function (returnOnError) {
|
|
|
+ const options = {
|
|
|
headers: {
|
|
|
- Accept: 'application/json'
|
|
|
- }
|
|
|
- }
|
|
|
+ Accept: "application/json",
|
|
|
+ },
|
|
|
+ };
|
|
|
if (this.token) {
|
|
|
- options.headers.Authorization = 'Bearer ' + this.token;
|
|
|
+ options.headers.Authorization = `Bearer ${this.token}`;
|
|
|
}
|
|
|
if (returnOnError) {
|
|
|
- options.validateStatus = function () {
|
|
|
- return true;
|
|
|
- }
|
|
|
+ options.validateStatus = () => true;
|
|
|
}
|
|
|
return options;
|
|
|
};
|
|
|
@@ -44,13 +42,30 @@ BackendApi.prototype._prepareOptions = function(returnOnError) {
|
|
|
* @param {function} reject
|
|
|
* @param {bool} returnOnError
|
|
|
*/
|
|
|
-BackendApi.prototype._handleResponse = function(response, resolve, reject, returnOnError) {
|
|
|
- logger('Response data:', response.data);
|
|
|
- if (!returnOnError && typeof response.data === 'object' && typeof response.data.error === 'object') {
|
|
|
- if (typeof response.data === 'object' && typeof response.data.error === 'object' && typeof response.data.error.message !== 'undefined') {
|
|
|
- reject(new Error(response.data.error.code + ': ' + response.data.error.message));
|
|
|
+BackendApi.prototype._handleResponse = (
|
|
|
+ response,
|
|
|
+ resolve,
|
|
|
+ reject,
|
|
|
+ returnOnError,
|
|
|
+) => {
|
|
|
+ logger("Response data:", response.data);
|
|
|
+ if (
|
|
|
+ !returnOnError &&
|
|
|
+ typeof response.data === "object" &&
|
|
|
+ typeof response.data.error === "object"
|
|
|
+ ) {
|
|
|
+ if (
|
|
|
+ typeof response.data === "object" &&
|
|
|
+ typeof response.data.error === "object" &&
|
|
|
+ typeof response.data.error.message !== "undefined"
|
|
|
+ ) {
|
|
|
+ reject(
|
|
|
+ new Error(
|
|
|
+ `${response.data.error.code}: ${response.data.error.message}`,
|
|
|
+ ),
|
|
|
+ );
|
|
|
} else {
|
|
|
- reject(new Error('Error ' + response.status));
|
|
|
+ reject(new Error(`Error ${response.status}`));
|
|
|
}
|
|
|
} else {
|
|
|
resolve(response.data);
|
|
|
@@ -63,10 +78,10 @@ BackendApi.prototype._handleResponse = function(response, resolve, reject, retur
|
|
|
* @param {function} reject
|
|
|
* @param {bool} returnOnError
|
|
|
*/
|
|
|
-BackendApi.prototype._handleError = function(err, resolve, reject, returnOnError) {
|
|
|
- logger('Axios Error:', err);
|
|
|
+BackendApi.prototype._handleError = (err, resolve, reject, returnOnError) => {
|
|
|
+ logger("Axios Error:", err);
|
|
|
if (returnOnError) {
|
|
|
- resolve(typeof err.response.data !== 'undefined' ? err.response.data : err);
|
|
|
+ resolve(typeof err.response.data !== "undefined" ? err.response.data : err);
|
|
|
} else {
|
|
|
reject(err);
|
|
|
}
|
|
|
@@ -84,11 +99,11 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
|
|
|
const options = this._prepareOptions(returnOnError);
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- let opts = {
|
|
|
+ const opts = {
|
|
|
method: method,
|
|
|
url: path,
|
|
|
- ...options
|
|
|
- }
|
|
|
+ ...options,
|
|
|
+ };
|
|
|
if (data !== undefined && data !== null) {
|
|
|
opts.data = data;
|
|
|
}
|
|
|
@@ -110,16 +125,17 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
|
|
|
* @returns {Promise<object>}
|
|
|
*/
|
|
|
BackendApi.prototype.postForm = function (path, form, returnOnError) {
|
|
|
- logger('POST', this.config.baseUrl + path);
|
|
|
+ logger("POST", this.config.baseUrl + path);
|
|
|
const options = this._prepareOptions(returnOnError);
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
const opts = {
|
|
|
...options,
|
|
|
...form.getHeaders(),
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
- this.axios.post(path, form, opts)
|
|
|
+ this.axios
|
|
|
+ .post(path, form, opts)
|
|
|
.then((response) => {
|
|
|
this._handleResponse(response, resolve, reject, returnOnError);
|
|
|
})
|