Created
June 13, 2024 01:47
-
-
Save lucaspmarra/3e29806fa6ebc374862b613bbc60ba22 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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