2024-05-15 17:47:45 +05:30
|
|
|
import { handleError, handleSuccess } from "./ApiClient";
|
|
|
|
|
import { AxiosRequestConfig } from "axios";
|
2024-03-27 20:36:03 +05:30
|
|
|
import { BASE_URL } from "./NetworkConstant";
|
|
|
|
|
import axios from "axios";
|
|
|
|
|
import { getBuildConfigDetails } from "../App/common/utilities/CacheUtils";
|
2024-05-15 17:47:45 +05:30
|
|
|
import { addBundleVersionToHeader } from "./NetworkUtils";
|
2024-03-27 20:36:03 +05:30
|
|
|
|
2024-09-09 19:49:54 +05:30
|
|
|
function newAbortSignal(timeoutMs: number): AbortSignal {
|
|
|
|
|
const abortController = new AbortController();
|
|
|
|
|
setTimeout(() => abortController.abort(), timeoutMs || 10000);
|
|
|
|
|
return abortController.signal;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-27 20:36:03 +05:30
|
|
|
export const get = async <T>(
|
|
|
|
|
url: string,
|
2024-05-15 17:47:45 +05:30
|
|
|
config?: AxiosRequestConfig,
|
2024-09-24 23:06:55 +05:30
|
|
|
params?: Record<string, any>,
|
2024-03-27 20:36:03 +05:30
|
|
|
): Promise<T> => {
|
|
|
|
|
try {
|
2024-05-15 17:47:45 +05:30
|
|
|
let requestConfig: AxiosRequestConfig = config || {};
|
|
|
|
|
let baseUrl: string | undefined;
|
|
|
|
|
await getBuildConfigDetails().then(response => {
|
|
|
|
|
baseUrl = response?.baseUrl;
|
|
|
|
|
});
|
2024-03-27 20:36:03 +05:30
|
|
|
let axiosInstance = axios.create({
|
|
|
|
|
baseURL: baseUrl ? baseUrl : BASE_URL,
|
|
|
|
|
timeout: 10000,
|
2024-05-15 17:47:45 +05:30
|
|
|
headers: requestConfig.headers,
|
2024-09-24 17:55:32 +05:30
|
|
|
signal: newAbortSignal(11000),
|
2024-05-15 17:47:45 +05:30
|
|
|
});
|
|
|
|
|
|
2024-10-09 14:46:26 +05:30
|
|
|
if (params) {
|
|
|
|
|
requestConfig.params = params;
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-15 17:47:45 +05:30
|
|
|
addBundleVersionToHeader(axiosInstance);
|
|
|
|
|
|
2024-03-27 20:36:03 +05:30
|
|
|
const response = await axiosInstance.get<T>(baseUrl + url, requestConfig);
|
|
|
|
|
return handleSuccess<T>(response);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
return handleError(error);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const post = async <T>(
|
|
|
|
|
url: string,
|
|
|
|
|
data?: any,
|
2024-05-15 17:47:45 +05:30
|
|
|
config?: AxiosRequestConfig,
|
2024-03-27 20:36:03 +05:30
|
|
|
): Promise<T> => {
|
|
|
|
|
try {
|
2024-05-15 17:47:45 +05:30
|
|
|
let requestConfig: AxiosRequestConfig = config || {};
|
|
|
|
|
let baseUrl: string | undefined;
|
|
|
|
|
await getBuildConfigDetails().then(response => {
|
|
|
|
|
baseUrl = response?.baseUrl;
|
|
|
|
|
});
|
2024-03-27 20:36:03 +05:30
|
|
|
let axiosInstance = axios.create({
|
|
|
|
|
baseURL: baseUrl ? baseUrl : BASE_URL,
|
|
|
|
|
timeout: 10000,
|
2024-05-15 17:47:45 +05:30
|
|
|
headers: requestConfig.headers,
|
2024-09-24 17:55:32 +05:30
|
|
|
signal: newAbortSignal(11000),
|
2024-05-15 17:47:45 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
|
|
addBundleVersionToHeader(axiosInstance);
|
|
|
|
|
|
|
|
|
|
const response = await axiosInstance.post<T>(
|
|
|
|
|
baseUrl + url,
|
|
|
|
|
data,
|
|
|
|
|
requestConfig,
|
|
|
|
|
);
|
2024-03-27 20:36:03 +05:30
|
|
|
return handleSuccess<T>(response);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
return handleError(error);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const patch = async <T>(
|
|
|
|
|
url: string,
|
|
|
|
|
data?: any,
|
2024-05-15 17:47:45 +05:30
|
|
|
config?: AxiosRequestConfig,
|
2024-03-27 20:36:03 +05:30
|
|
|
): Promise<T> => {
|
|
|
|
|
try {
|
2024-05-15 17:47:45 +05:30
|
|
|
let requestConfig: AxiosRequestConfig = config || {};
|
|
|
|
|
let baseUrl: string | undefined;
|
|
|
|
|
await getBuildConfigDetails().then(response => {
|
|
|
|
|
baseUrl = response?.baseUrl;
|
|
|
|
|
});
|
2024-03-27 20:36:03 +05:30
|
|
|
let axiosInstance = axios.create({
|
|
|
|
|
baseURL: baseUrl ? baseUrl : BASE_URL,
|
|
|
|
|
timeout: 10000,
|
2024-05-15 17:47:45 +05:30
|
|
|
headers: requestConfig.headers,
|
2024-09-24 17:55:32 +05:30
|
|
|
signal: newAbortSignal(11000),
|
2024-05-15 17:47:45 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
|
|
addBundleVersionToHeader(axiosInstance);
|
|
|
|
|
|
|
|
|
|
const response = await axiosInstance.patch<T>(
|
|
|
|
|
baseUrl + url,
|
|
|
|
|
data,
|
|
|
|
|
requestConfig,
|
|
|
|
|
);
|
2024-03-27 20:36:03 +05:30
|
|
|
return handleSuccess<T>(response);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
return handleError(error);
|
|
|
|
|
}
|
|
|
|
|
};
|