| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import {useProfileAccessStore} from "~/store/profile/access";
- import {FetchContext, FetchOptions} from "ohmyfetch";
- import Page from "~/services/store/page";
- import {TYPE_ALERT} from "~/types/enums";
- /**
- * Utilise la fonction `create` de ohmyfetch pour générer un fetcher dédié à l'interrogation de Ap2i
- *
- * @see https://github.com/unjs/ohmyfetch/blob/main/README.md#%EF%B8%8F-create-fetch-with-default-options
- */
- export const useAp2iFetch = () => {
- const runtimeConfig = useRuntimeConfig()
- /**
- * Peuple les headers avant l'envoi de la requête
- *
- * @param request
- * @param options
- */
- const onRequest = async function ({ request, options }: FetchContext) {
- // @ts-ignore
- if(options ?. params.noXaccessId) {
- return
- }
- request = request as Request
- const profileAccessStore = useProfileAccessStore()
- request.headers.set('x-accessid', String(profileAccessStore.id))
- request.headers.set('Authorization', 'BEARER ' + profileAccessStore.bearer)
- if (profileAccessStore.switchId) {
- request.headers.set('x-switch-user', String(profileAccessStore.switchId))
- }
- }
- /**
- * Gère les erreurs retournées par l'api
- *
- * @param request
- * @param response
- * @param error
- */
- const onResponseError = async function ({ request, response, error }: FetchContext) {
- if (response && response.status === 401) {
- navigateTo('/login')
- }
- if (response && response.status === 403) {
- new Page().addAlerts(TYPE_ALERT.ALERT, ['forbidden'])
- }
- if (response && response.status === 500) {
- new Page().addAlerts(TYPE_ALERT.ALERT, [error ? error.message : response.statusText])
- }
- }
- const config : FetchOptions = {
- baseURL: runtimeConfig.baseUrl ?? runtimeConfig.public.baseUrl,
- onRequest,
- onResponseError
- }
- return $fetch.create(config)
- }
|