Advertisement
KoctrX

Untitled

Oct 10th, 2024
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export default new class {
  2.     constructor() {
  3.         this.apiPrefix = `/api`;
  4.         this.apiPrefix = `https://medwise.webstaginghub.com//api`;
  5.     }
  6.  
  7.     defaultHeaders() {
  8.         return {
  9.             'Content-Type': 'application/json',
  10.         };
  11.     }
  12.  
  13.     authTokenHeaders(headers = {}) {
  14.         return {
  15.             ...(headers || {}),
  16.             Authorization: localStorage.getItem('authToken')
  17.         };
  18.     }
  19.  
  20.     async handleUnauthorize(result) {
  21.         const json = await result.json();
  22.         if (!json.success && json.message === 'Invalid token') {
  23.             location.reload();
  24.             await new Promise(resolve => setTimeout(resolve, 1000));
  25.         }
  26.  
  27.         return json;
  28.     }
  29.  
  30.     get(url, headers = false, options = {}) {
  31.         if (!headers) headers = this.defaultHeaders();
  32.  
  33.         headers = this.authTokenHeaders(headers);
  34.         const prefix = options.hasOwnProperty('prefix') ? options.prefix : this.apiPrefix;
  35.  
  36.         return fetch(`${prefix}/${url}`, { headers }).then(res => {
  37.             if (res.status === 403) setTimeout(() => location.reload(), 500);
  38.             return this.handleUnauthorize(res);
  39.         });
  40.     }
  41.  
  42.     delete(url, headers = false) {
  43.         if (!headers) headers = this.defaultHeaders();
  44.         headers = this.authTokenHeaders(headers);
  45.         return fetch(`${this.apiPrefix}/${url}`, {
  46.             method: 'DELETE', headers
  47.         }).then(res => this.handleUnauthorize(res));
  48.     }
  49.  
  50.     post(url, data = {}, headers = false) {
  51.         if (!headers) headers = this.defaultHeaders();
  52.         headers = this.authTokenHeaders(headers);
  53.         return fetch(`${this.apiPrefix}/${url}`, {
  54.             method: 'post', body: data, headers
  55.         }).then(res => this.handleUnauthorize(res));
  56.     }
  57.  
  58.     put(url, data = {}, headers = false) {
  59.         if (!headers) headers = this.defaultHeaders();
  60.         headers = this.authTokenHeaders(headers);
  61.         return fetch(`${this.apiPrefix}/${url}`, {
  62.             method: 'put', body: data, headers
  63.         }).then(res => this.handleUnauthorize(res));
  64.     }
  65.  
  66.     jsonToFormData(obj, form = new FormData(), namespace = '') {
  67.         for (let key in obj) {
  68.             if (obj.hasOwnProperty(key)) {
  69.                 let formKey = namespace ? `${namespace}[${key}]` : key;
  70.  
  71.                 if (obj[key] instanceof File) {
  72.                     form.append(formKey, obj[key]);
  73.                 } else if (obj[key] instanceof Array) {
  74.                     obj[key].forEach((item, index) => {
  75.                         this.jsonToFormData(item, form, `${formKey}[${index}]`);
  76.                     });
  77.                 } else if (typeof obj[key] === 'object' && obj[key] !== null) {
  78.                     this.jsonToFormData(obj[key], form, formKey);
  79.                 } else {
  80.                     form.append(formKey, obj[key]);
  81.                 }
  82.             }
  83.         }
  84.         return form;
  85.     }
  86. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement