Skip to content
Snippets Groups Projects
Select Git revision
  • Develop
  • master default protected
  • Develop_copy_to_implement_acessibility
  • Develop_copy_to_implement_acessibility_in_admin
  • vinicius_accessibility_from_copy
  • luis_accesibility_before_develop
  • vinicius_accessiblity
  • Fixing_bugs
  • Otimizando_Vinicius
  • Password_recovery_fix
  • fix_admin_bugs_luis
  • luis_gamefication
  • gamificacaoLucas
  • GameficationAdmin
  • fixHomeScreen
  • Fix_perfil
  • fix_remaining_bugs
  • homologa
  • centraliza-axios
  • Gamification
  • v1.2.0
  • v1.1.1
  • v1.1.0
  • V1.0.1
  • V1.0.0
  • V1.0.0-RC
26 results

getAxiosConfig.js

Blame
  • 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)
            })
    
    }