mihalkoff

api2.js

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