first commit

This commit is contained in:
2026-07-16 20:48:43 -03:00
commit 5696cee264
1111 changed files with 322270 additions and 0 deletions
+64
View File
@@ -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;