| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import {useProfileAccessStore} from "~/store/profile/access";
- import {FetchContext, FetchOptions} from "ohmyfetch";
- import Page from "~/services/store/page";
- import {TYPE_ALERT} from "~/types/enums";
- import {useRuntimeConfig} from "#app";
- import OhMyFetchConnector from "~/services/data/connector/ohMyFetchConnector";
- import ApiRequestService from "~/services/data/apiRequestService";
- /**
- * Retourne une instance de ApiRequestService configurée pour interroger l'api Ap2i
- *
- * @see https://github.com/unjs/ohmyfetch/blob/main/README.md#%EF%B8%8F-create-fetch-with-default-options
- */
- export const useAp2iRequestService = () => {
- 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 && options.noXaccessId) {
- // return
- // }
- //
- // request = request as Request
- //
- // console.log(request, options)
- //
- // 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
- }
- // Utilise la fonction `create` de ohmyfetch pour générer un fetcher dédié à l'interrogation de Ap2i
- const fetcher = $fetch.create(config)
- const connector = new OhMyFetchConnector(fetcher)
- return new ApiRequestService(connector)
- }
|