httpService.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const { REACT_APP_API_URL: baseUrl } = process.env;
  2. const localStorageKey = "usr_jwt";
  3. const getCurrentToken = () => {
  4. return new Promise((resolve, reject) => {
  5. const jwt = localStorage.getItem(localStorageKey);
  6. if (!jwt) reject("No hay sesión.");
  7. resolve(jwt);
  8. });
  9. };
  10. const getHeaders = (token) => ({
  11. "Content-Type": "application/json",
  12. Accept: "application/json",
  13. Authorization: `Bearer ${token}`,
  14. });
  15. const getHeadersWithoutToken = () => ({
  16. "Content-Type": "application/json",
  17. Accept: "application/json",
  18. });
  19. const HttpService = {
  20. get: async (url, auth = true) => {
  21. let token = null;
  22. if (auth) token = await getCurrentToken();
  23. const response = await fetch(baseUrl + url, {
  24. method: "GET",
  25. headers: auth ? getHeaders(token) : getHeadersWithoutToken(),
  26. });
  27. return response.json();
  28. },
  29. post: async (url, data, auth = true) => {
  30. let token = null;
  31. if (auth) token = await getCurrentToken();
  32. const response = await fetch(baseUrl + url, {
  33. method: "POST",
  34. headers: auth ? getHeaders(token) : getHeadersWithoutToken(),
  35. body: JSON.stringify(data),
  36. });
  37. return response.json();
  38. },
  39. };
  40. export default HttpService;