Advertisement
osman1997

api.js

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