Skip to content

Instantly share code, notes, and snippets.

@lucaspmarra
Created June 13, 2024 01:47
Show Gist options
  • Select an option

  • Save lucaspmarra/3e29806fa6ebc374862b613bbc60ba22 to your computer and use it in GitHub Desktop.

Select an option

Save lucaspmarra/3e29806fa6ebc374862b613bbc60ba22 to your computer and use it in GitHub Desktop.
import { boot } from 'quasar/wrappers';
import axios from 'axios';
// import { useI18n } from 'vue-i18n';
import { Notify } from 'quasar';
/**
* Instância do Axios configurada para requisições da API.
*/
const api = axios.create();
/**
* Define ou remove o token de autorização para a instância do axios.
*
* @param {string} token - O token JWT a ser definido. Se não for fornecido, o cabeçalho de autorização é removido.
*/
const setAuthorizationToken = (token: string) => {
if (token) {
api.defaults.headers.common['Authorization'] = `Bearer ${token}`;
}
else {
delete api.defaults.headers.common['Authorization'];
}
};
const errorMessages: any = {
401: 'global.messages.unauthorized',
403: 'global.messages.forbidden',
404: 'global.messages.notFound',
500: 'global.messages.internalServerError',
504: 'global.messages.gatewayTimeoutError',
unknown: 'global.messages.unknown'
};
export default boot(({ app }) => {
// const dataI18N = useI18n({ useScope: 'global' });
// const { t } = dataI18N;
/**
*
* Propriedade global para acessar a instância do axios.
* Isso permite que você use `this.$axios` dentro da Options API do Vue.
*
*/
app.config.globalProperties.$axios = axios;
/**
* Propriedade global para acessar a instância personalizada do axios (api).
* Isso permite que você use `this.$api` dentro da Options API do Vue.
*/
app.config.globalProperties.$api = api;
/**
* Propriedade global para definir o token de autorização.
* Isso permite que você use `this.$setAuthorizationToken` dentro da Options API do Vue.
*
* @param {string} token - O token JWT a ser definido.
*/
app.config.globalProperties.$setAuthorizationToken = setAuthorizationToken;
/**
* Interceptor da response para response de erros globais
*/
api.interceptors.response.use(
(response) => {
console.log(response);
Notify.create({
color: 'negative',
position: 'top',
message: 'sucesso',
icon: 'report_problem',
closeBtn: true,
progress: true
});
return response;
},
(error) => {
console.log('erro', error);
Notify.create({
color: 'negative',
position: 'top',
message: 'Erro',
icon: 'report_problem',
closeBtn: true,
progress: true
});
return Promise.reject(error);
}
);
});
export { axios, api, setAuthorizationToken };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment