Guest User

Untitled

a guest
Jan 2nd, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. let users = JSON.parse(localStorage.getItem('users')) || []
  2.  
  3. export function configureFakeAPI () {
  4. let realFetch = window.fetch
  5.  
  6. window.fetch = function (url, opts) {
  7. return new Promise((resolve, reject) => {
  8. setTimeout(() => {
  9. if (url.endsWith('/users/authenticate') && opts.method === 'POST') {
  10. let params = JSON.parse(opts.body)
  11.  
  12. let filteredUsers = users.filter(user =>
  13. user.username === params.username &&
  14. user.password === params.password
  15. )
  16.  
  17. if (filteredUsers.length) {
  18. let user = filteredUsers[0]
  19. let responseJson = {
  20. id: user.id,
  21. username: user.username
  22. }
  23. resolve({ ok: true, json: () => responseJson })
  24. } else {
  25. reject(new Error('Username or password is incorrect'))
  26. }
  27.  
  28. return
  29. }
  30.  
  31. if (url.endsWith('/users/register') && opts.method === 'POST') {
  32. let newUser = JSON.parse(opts.body)
  33.  
  34. let duplicateUser = users.filter(user => user.username === newUser.username).length
  35.  
  36. if (duplicateUser) {
  37. reject(new Error('Username "' + newUser.username + '" is already taken'))
  38. return
  39. }
  40.  
  41. newUser.id = users.length
  42. ? Math.max(...users.map(user => user.id)) + 1
  43. : 1
  44.  
  45. users.push(newUser)
  46. localStorage.setItem('users', JSON.stringify(users))
  47.  
  48. resolve({ ok: true, json: () => ({}) })
  49.  
  50. return
  51. }
  52.  
  53. realFetch(url, opts)
  54. .then(response => resolve(response))
  55. }, 500)
  56. })
  57. }
  58. }
Add Comment
Please, Sign In to add comment