Skip to content

Instantly share code, notes, and snippets.

@sultaniman
Created May 13, 2018 11:29
Show Gist options
  • Save sultaniman/86042197648902cd9514f9b2ef6b8307 to your computer and use it in GitHub Desktop.
Save sultaniman/86042197648902cd9514f9b2ef6b8307 to your computer and use it in GitHub Desktop.
/*
* Returns default headers list
* which will be used with every request.
*/
function getHeaders(multipart = false) {
let defaultHeaders = BASE_HEADERS
if (multipart) {
defaultHeaders = {}
}
if (localStorage.token) {
defaultHeaders = {
'Authorization': `JWT ${localStorage.token}`,
...defaultHeaders
}
}
return defaultHeaders
}
/*
* Wraps error responses from the API
* and returns `Promise.reject` with error
*/
export function checkResponse(response) {
if (validStatuses.includes(response.status)) {
return response
}
// If not authorized then reset token
// and redirect to login page
if (response.status === 401) {
localStorage.removeItem('token')
router.push('login')
return Promise.reject(new Error('USER_ANONYMOUS'))
}
let err = new Error(response.statusText)
err.response = response
return Promise.reject(err)
}
// Just a convenient shorthand
export const esc = encodeURIComponent
// Returns formatted query string from object
export function qs(params) {
return (
Object
.keys(params)
.map(k => esc(k) + '=' + esc(params[k]))
.join('&')
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment