-
Lucas Eduardo Schoenfelder authoredLucas Eduardo Schoenfelder authored
getAxiosConfig.js 7.04 KiB
import {apiUrl} from '../../env.js'
import axios from 'axios'
export function getAxiosConfigFromJSON () {
let config = {
headers : JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
}
return config
}
export function updateHeaders (newHeaders) {
sessionStorage.setItem('@portalmec/accessToken', newHeaders['access-token'])
let auth_headers = JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
if (auth_headers) {
auth_headers['access-token'] = newHeaders['access-token']
}
else {
auth_headers = {
client: newHeaders.client,
"access-token": newHeaders['access-token'],
uid: newHeaders.uid,
expiry: newHeaders.expiry,
"token-type": "Bearer"
}
}
sessionStorage.setItem('@portalmec/auth_headers', JSON.stringify(auth_headers))
}
function fetchHeaders () {
let auth_headers = JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
if (auth_headers) {
const myHeaders = new Headers(auth_headers)
return myHeaders
}
else {
return {}
}
}
function checkPreviousTokens (new_token) {
let prev_tokens = JSON.parse(sessionStorage.getItem('@portalmec/tokens'))
if (prev_tokens) {
if (!prev_tokens.hasOwnProperty(new_token)) {
prev_tokens[new_token] = 1
sessionStorage.setItem('@portalmec/tokens', JSON.stringify(prev_tokens))
return true
}
else {
return false
}
}
else {
let tokens = {}
tokens[new_token] = 1
sessionStorage.setItem('@portalmec/tokens', JSON.stringify(tokens))
return true
}
}
function updateAccessToken (newAccessToken) {
if (checkPreviousTokens(newAccessToken)) {
sessionStorage.setItem('@portalmec/accessToken', newAccessToken)
let auth_headers = JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
if (auth_headers) {
auth_headers['access-token'] = newAccessToken
}
sessionStorage.setItem('@portalmec/auth_headers', JSON.stringify(auth_headers))
}
}
export const getRequest = (url, onSuccess, onError) => {
fetch((`${apiUrl}${url}`), {
headers : fetchHeaders()
})
.then(response => {
if (response.headers.has('access-token')) {
updateAccessToken(response.headers.get('access-token'))
}
return response.json().catch(err => {
return {};
})
})
.then(data => {
console.log(data)
onSuccess(data)
})
.catch(error => {
onError(error)
})
}
export const deleteRequest = (url, onSuccess, onError) => {
fetch((`${apiUrl}${url}`), {
method : 'DELETE',
headers : fetchHeaders()
})
.then(response => {
if (response.headers.has('access-token')) {
updateAccessToken(response.headers.get('access-token'))
}
return response.json().catch(err => {
return {};
})
})
.then(data => {
console.log(data)
onSuccess(data)
})
.catch(error => {
onError(error)
})
}
export const putRequest = (url, payload, onSuccess, onError) => {
let newHeaders = fetchHeaders()
if (payload instanceof FormData) {
newHeaders.append('Content-Type', 'multipart/form-data')
}
else {
newHeaders.append('Content-Type', 'application/json')
}
fetch((`${apiUrl}${url}`), {
method : 'PUT',
headers : newHeaders,
body: payload instanceof FormData ? payload : JSON.stringify(payload)
})
.then(response => {
if (response.headers.has('access-token')) {
updateAccessToken(response.headers.get('access-token'))
}
return response.json().catch(err => {
return {};
})
})
.then(data => {
console.log(data)
onSuccess(data)
})
.catch(error => {
onError(error)
})
}
export const postRequest = (url, payload, onSuccess, onError) => {
let newHeaders = fetchHeaders()
if (payload instanceof FormData) {
newHeaders.append('Content-Type', 'multipart/form-data')
}
else {
newHeaders.append('Content-Type', 'application/json')
}
fetch((`${apiUrl}${url}`), {
method : 'POST',
headers : newHeaders,
body: payload instanceof FormData ? payload : JSON.stringify(payload)
})
.then(response => {
if (response.headers.has('access-token')) {
updateAccessToken(response.headers.get('access-token'))
}
return response.json().catch(err => {
return {};
})
})
.then(data => {
console.log(data)
onSuccess(data)
})
.catch(error => {
onError(error)
})
}
export const fetchAllRequest = (urls, onSuccess, onError) => {
Promise.all( urls.map( url => fetch(`${apiUrl}${url}`, {
headers : fetchHeaders()
}))).then( (responses) => {
for(let res of responses) {
console.log(res)
if (res.headers.has('access-token') && res.status !== 304) {
console.log(res)
updateAccessToken(res.headers.get('access-token'))
}
}
return Promise.all(responses.map( (response) => response.json().catch(err => {
return {};
})))
}).then( (data) => {
onSuccess(data)
}).catch((error) => {
onError(error)
})
}
export const validateGoogleLoginToken = (config, onSuccess, onError) => {
axios.get( (`${apiUrl}/auth/validate_token/`), config ).then(
(response) => {
if ( response.headers['access-token'] ) {
updateHeaders(response.headers)
}
onSuccess(response.data)
},
(error) => {
onError(error)
}
)
}
export const authentication = (url, payload, onSuccess, onError) => {
let formData = new FormData()
for (const [key, value] of Object.entries(payload)) {
formData.append(`${key}`,value);
}
fetch((`${apiUrl}${url}`), {
method : 'POST',
body: formData
})
.then(response => {
const auth_headers = {
client: response.headers.get('client'),
"access-token": response.headers.get('access-token'),
uid: response.headers.get('uid'),
expiry: response.headers.get('expiry'),
"token-type": "Bearer"
}
sessionStorage.setItem('@portalmec/auth_headers', JSON.stringify(auth_headers))
return response.json().catch(err => {
return {};
})
})
.then(data => {
console.log(data)
onSuccess(data)
})
.catch(error => {
onError(error)
})
}