request.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import axiosAPI from "./axios";
  2. import { refreshToken } from "@/actions/auth";
  3. const handleRequest = async (request) => {
  4. try {
  5. return await request();
  6. } catch (error) {
  7. if (error?.response?.status === 401) {
  8. try {
  9. const token = await refreshToken();
  10. if (token.success) {
  11. axiosAPI.defaults.headers.Authorization = `Bearer ${token.access_token}`;
  12. return await request();
  13. }
  14. return false;
  15. } catch (error) {
  16. console.log(error);
  17. return false;
  18. }
  19. }
  20. console.log(error);
  21. return false;
  22. }
  23. };
  24. export const get = async (url, config = null) => {
  25. try {
  26. const request = () => axiosAPI.get(url, config);
  27. const res = await handleRequest(request);
  28. return res;
  29. } catch (error) {
  30. console.log(error);
  31. return false;
  32. }
  33. };
  34. export const post = async (url, data, config = null) => {
  35. try {
  36. const request = () => axiosAPI.post(url, data, config);
  37. const res = await handleRequest(request);
  38. return res;
  39. } catch (error) {
  40. console.log(error);
  41. return false;
  42. }
  43. };
  44. export const put = async (url, data, config = null) => {
  45. try {
  46. const request = () => axiosAPI.put(url, data, config);
  47. const res = await handleRequest(request);
  48. return res;
  49. } catch (error) {
  50. console.log(error);
  51. return false;
  52. }
  53. };
  54. export const del = async (url, config = null) => {
  55. try {
  56. const request = () => axiosAPI.delete(url, config);
  57. const res = await handleRequest(request);
  58. return res;
  59. } catch (error) {
  60. console.log(error);
  61. return false;
  62. }
  63. };