DocSpace-buildtools/packages/asc-web-common/api/client-ssr.js
2022-01-27 16:48:15 +03:00

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