From 7de2f82aea2078401e3d76e5c864213875e5aad1 Mon Sep 17 00:00:00 2001 From: Francesco Esposito <33671357+frsposito@users.noreply.github.com> Date: Wed, 31 Jul 2019 15:59:10 +0200 Subject: [PATCH] feat(api): add user methods --- src/api/user.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/api/user.js diff --git a/src/api/user.js b/src/api/user.js new file mode 100644 index 0000000..929a901 --- /dev/null +++ b/src/api/user.js @@ -0,0 +1,47 @@ +import { config } from '../config'; + + +export const userAPI = { + login, + logout, +}; + +function login(email, password) { + const options = { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email, password }) + } + + return fetch(`${config.baseURL}users/login`, options) + .then(handleResponse) + .then(user => { + localStorage.setItem('user', JSON.stringify(user)); + return user; + }); +}; + + +function logout() { + localStorage.removeItem('user'); +} + + +function handleResponse(response) { + return response.text() + .then(text => { + const data = text && JSON.parse(text); + + if (!response.ok) { + if (response.status === 401) { + logout(); + } + + const error = (data && data.message) || response.statusText; + return Promise.reject(error); + } + + return data; + } + ); +}; \ No newline at end of file