Advertisement
Liliana797979

api.js - js applications

Nov 23rd, 2021
786
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const host = "http://localhost:3030";
  2.  
  3. //universal function for requests:
  4.  
  5. async function request(url, options) {
  6.   try {
  7.     const response = await fetch(host + url, options);
  8.  
  9.     if (response.ok !== true) {
  10.       if (response.status == 403) {
  11.         sessionStorage.removeItem("userData"); // problem with registration!
  12.       }
  13.  
  14.       const error = await response.json();
  15.       throw new Error(error.message);
  16.     }
  17.  
  18.     if (response.status == 204) {
  19.       return response;
  20.     } else {
  21.       return response.json();
  22.     }
  23.   } catch (err) {
  24.     alert(err.message);
  25.     throw err;
  26.   }
  27. }
  28.  
  29. // function for creating request options:
  30. function createOptions(method = "get", data) {
  31.   const options = {
  32.     method,
  33.     headers: {},
  34.   };
  35.  
  36.   if (data !== undefined) {
  37.     options.headers["Content-Type"] = "application/json";
  38.     options.body = JSON.stringify(data);
  39.   }
  40.   const userData = JSON.parse(sessionStorage.getItem("userData"));
  41.   if (userData !== null) {
  42.     options.headers["X-Authorization"] = userData.token;
  43.   }
  44.  
  45.   return options;
  46. }
  47.  
  48. export async function get(url) {
  49.   return request(url, createOptions());
  50. }
  51.  
  52. export async function post(url, data) {
  53.   return request(url, createOptions("post", data));
  54. }
  55.  
  56. export async function put(url, data) {
  57.   return request(url, createOptions("put", data));
  58. }
  59.  
  60. export async function del(url) {
  61.   return request(url, createOptions("delete"));
  62. }
  63.  
  64. export async function login(email, password) {
  65.   const result = await post("/users/login", { email, password });
  66.   const userData = {
  67.     email: result.email,
  68.     id: result._id,
  69.     token: result.accessToken,
  70.   };
  71.   sessionStorage.setItem("userData", JSON.stringify(userData));
  72. }
  73.  
  74. export async function register(email, password) {
  75.   const result = await post("/users/register", { email, password });
  76.   const userData = {
  77.     email: result.email,
  78.     id: result._id,
  79.     token: result.accessToken,
  80.   };
  81.   sessionStorage.setItem("userData", JSON.stringify(userData));
  82. }
  83.  
  84. export async function logout() {
  85.   await get("/users/logout");
  86.   sessionStorage.removeItem("userData");
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement