first commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { getTokenFromLocalStorage } from "@config/token";
|
||||
import { ApiError } from "@models/Server.Error.model";
|
||||
import axios from "@config/axios.config";
|
||||
|
||||
class ApiService {
|
||||
/**
|
||||
* Sends a HTTP POST request to the specified endpoint with the provided data
|
||||
* and returns a promise that resolves to the response data.
|
||||
*
|
||||
* @param {string} endpoint - The URL or path of the API endpoint to send the request to.
|
||||
* @param {object} data - The data to be sent with the request.
|
||||
* @return {Promise<T>} A promise that resolves to the response data of type T.
|
||||
*/
|
||||
post<T>(endpoint: string, data: object): Promise<T> {
|
||||
return new Promise<T>((resolve, reject) => {
|
||||
axios()
|
||||
.post<T>(endpoint, data)
|
||||
.then((response) => {
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) => {
|
||||
try {
|
||||
const data = error.response.data;
|
||||
const msg = data.desc || data.message || JSON.stringify(data.details || data);
|
||||
reject(new ApiError(data.code || error.response.status || 500, msg));
|
||||
} catch {
|
||||
const errorMessage = process.env.VITE_API_UNAVAILABLE as string;
|
||||
reject(new ApiError(500, errorMessage));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
postFile<T>(endpoint: string, data: FormData): Promise<T> {
|
||||
return new Promise<T>((resolve, reject) => {
|
||||
axios()
|
||||
.post<T>(endpoint, data, {
|
||||
headers: {
|
||||
"content-type": "multipart/form-data",
|
||||
Authorization: getTokenFromLocalStorage(),
|
||||
},
|
||||
})
|
||||
.then((response) => {
|
||||
resolve(response.data);
|
||||
})
|
||||
.catch((error) => {
|
||||
try {
|
||||
console.error("Full API Error:", error.response?.data);
|
||||
const data = error.response.data;
|
||||
const msg = data.desc || data.message || JSON.stringify(data.details || data);
|
||||
reject(new ApiError(data.code || error.response.status || 500, msg));
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
const errorMessage = process.env.VITE_API_UNAVAILABLE as string;
|
||||
reject(new ApiError(500, errorMessage));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const API = new ApiService();
|
||||
|
||||
export default API;
|
||||
Reference in New Issue
Block a user