Skip to content

Instantly share code, notes, and snippets.

@amritghimire
Last active January 7, 2020 14:46
Show Gist options
  • Save amritghimire/b216acc64bcf90c3f46c99638c2421f2 to your computer and use it in GitHub Desktop.
Save amritghimire/b216acc64bcf90c3f46c99638c2421f2 to your computer and use it in GitHub Desktop.
Util and http service segregation
const {post} = =require('../utils/http');
const {putToken, saveUser} = require('../utils/token');
async function login(username, password){
try{
const response = await post('/login',{username, password});
if(response.status === 201){
// Login Successful.
putToken(response.data.token);
saveUser(response.data.user);
}else{
// Handle incorrect password.
console.log(response.data.error);
}
}catch(e){
// Handle network error or something like that.
console.log(e);
}
}
export default {login};
const axios = require('axios');
const {baseUrl, endpoints} = require('../config'); // Change it accordingly
const { getToken } = require('../utils/token');
const timeout = 1000;
const token = getToken();
const headers = {
Authorization: `Bearer ${token}`
}
const request = axios.create({
baseUrl,
timeout,
headers
});
request.interceptors.response.use(function (response){
if(response.status===401){
window.location.href = endpoint.login || '/login'; // Redirect to login for 401 error.
}
})
export const appendArgsToUrl = (url, queryParams) => {
const queryString = [];
Object.keys(queryParams).forEach(function(key) {
if (queryParams[key] !== null) {
queryString.push(`${key}=${encodeURIComponent(queryParams[key])}`);
}
});
if (!queryString.length) {
return url;
}
return `${url}?${queryString.join('&')}`;
};
function get(url, parameter,config){
const finalUrl = appendArgsToUrl(url, parameter);
return request.get(finalUrl, config)
}
function post(url, data, config){
return request.post(url, data, config);
}
function put(url, data, config){
return request.put(url, data, config);
}
function remove(url, config){
return request.delete(url, config);
}
function patch(url, data, config){
return request.patch(url, data, config);
}
export default Object.freeze({get, post, put, remove, patch})
getToken(){
return localStorage.getItem('secretToken')
};
putToken(token){
return localStorage.setItem('secretToken', token);
}
saveUser(user){
return localStorage.setItem('user',JSON.stringify(user));
}
getUser(user){
return JSON.parse(localStorage.getItem('user'));
}
export default Object.freeze({getToken, putToken});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment