81 lines
2.1 KiB
JavaScript
81 lines
2.1 KiB
JavaScript
import axios from "axios";
|
|
import { AppServerConfig } from "../constants";
|
|
import combineUrl from "../utils/combineUrl";
|
|
|
|
const { proxyURL, apiPrefixURL, apiTimeout } = AppServerConfig;
|
|
|
|
const apiBaseURL = combineUrl(process.env.remoteApiUrl, proxyURL, apiPrefixURL);
|
|
|
|
const client = axios.create({
|
|
baseURL: apiBaseURL,
|
|
responseType: "json",
|
|
timeout: apiTimeout,
|
|
});
|
|
|
|
export function setClientBasePath(path) {
|
|
if (!path) return;
|
|
|
|
client.defaults.baseURL = path;
|
|
}
|
|
|
|
const getResponseError = (res) => {
|
|
if (!res) return;
|
|
|
|
if (res.data && res.data.error) {
|
|
return res.data.error.message;
|
|
}
|
|
|
|
if (res.isAxiosError && res.message) {
|
|
return res.message;
|
|
}
|
|
};
|
|
|
|
export default function (options) {
|
|
const onSuccess = function (response) {
|
|
const error = getResponseError(response);
|
|
if (error) throw new Error(error);
|
|
|
|
if (!response || !response.data || response.isAxiosError) return null;
|
|
|
|
if (response.data.hasOwnProperty("total"))
|
|
return { total: +response.data.total, items: response.data.response };
|
|
|
|
if (response.request.responseType === "text") return response.data;
|
|
|
|
return response.data.response;
|
|
};
|
|
|
|
const onError = function (error) {
|
|
//console.error("Request Failed:", error);
|
|
|
|
const errorText = error.response
|
|
? getResponseError(error.response)
|
|
: error.message;
|
|
console.log(errorText);
|
|
// switch (error.response?.status) {
|
|
// case 401:
|
|
// if (options.skipUnauthorized) return Promise.resolve();
|
|
|
|
// request({
|
|
// method: "post",
|
|
// url: "/authentication/logout",
|
|
// }).then(() => {
|
|
// setWithCredentialsStatus(false);
|
|
// window.location.href = window?.AppServer?.personal ? "/" : loginURL;
|
|
// });
|
|
// break;
|
|
// case 402:
|
|
// if (!window.location.pathname.includes("payments")) {
|
|
// window.location.href = paymentsURL;
|
|
// }
|
|
// break;
|
|
// default:
|
|
// break;
|
|
// }
|
|
|
|
return Promise.reject(errorText || error);
|
|
};
|
|
|
|
return client(options).then(onSuccess).catch(onError);
|
|
}
|