Files
2022-12-09 08:36:26 -06:00

123 lines
2.7 KiB
JavaScript

import axios from 'axios';
import apiBase from '../../appConfig';
import i18n from '../../i18n';
export const get = (
url,
params,
isPublic = false,
responseType = null,
passedFullURL = false
) => {
let apiUrl = passedFullURL
? `${apiBase.apiUrl}${url}`
: `${apiBase.apiUrl}/api/v1${url}`;
const axiosInstance = axios.create();
const axiosObj = {
method: 'get',
url: apiUrl,
params: params
};
if (isPublic) {
// apis in which no authentication needed
axiosInstance.transformRequest = (data, headers) => {
delete headers.common['Authorization'];
};
}
if (responseType) axiosObj.responseType = responseType;
return axiosInstance(axiosObj)
.then((response) => handleResponse(response))
.catch((error) => handleError(error));
};
export function put(...rest) {
return dataRequest('put', ...rest);
}
export function post(...rest) {
return dataRequest('post', ...rest);
}
export function del(...rest) {
return dataRequest('delete', ...rest);
}
const dataRequest = (
type = 'post',
url,
bodyObj = undefined,
isPublic = false,
mediaFile = false,
passedFullURL = false
) => {
const apiUrl = passedFullURL
? `${apiBase.apiUrl}${url}`
: `${apiBase.apiUrl}/api/v1${url}`;
if (mediaFile) {
const formData = new FormData();
Object.keys(bodyObj).map((key) => {
formData.append(key, bodyObj[key]);
});
bodyObj = formData;
}
const axiosInstance = axios.create();
const axiosObj = {
method: type,
url: apiUrl,
data: bodyObj
};
if (isPublic) {
// apis in which no authentication needed
axiosInstance.transformRequest = (data, headers) => {
delete headers.common['Authorization'];
};
}
return axiosInstance(axiosObj)
.then((response) => handleResponse(response))
.catch((error) => handleError(error));
};
export const handleResponse = (response) => {
if (
response.data &&
(response.data.code === 403 || response.data.code === 404)
) {
return {
error: true,
errorMessage: response.data.message,
data: response.message
};
}
return {
error: false,
data: response.data
};
};
export const handleError = (error) => {
const { response } = error;
let errorMsg = i18n.t('common:alerts.error.somethingWrong');
if (response && response.status === 422) {
if (response.data.message) errorMsg = response.data.message;
} else if (response && response.status === 401) {
// Unauthorized
}
console.log('API Error ::: ', JSON.stringify(response));
return {
error: true,
errorMessage: errorMsg,
data: response ? response.data.errors : null,
status: response ? response.status : null
};
};