Skip to content
Snippets Groups Projects
Select Git revision
  • 03ecb67229a7671101ac38371994bdf67375b670
  • main default protected
  • dev
  • sidecar-to-clean-uploaded-files
  • supabase
  • serve-django-static
  • FastAPI
  • v0.1.0
8 results

api.ts

Blame
  • api.ts 1.75 KiB
    export default defineNuxtPlugin(() => {
        const sessionExpiryDate = useState<string | null>('sessionExpiryDate', () => null)
        const runtimeConfig = useRuntimeConfig()
    
        const $api = $fetch.create({
            baseURL: "/api",
            async onRequest({ request, options, error }) {
                // login
                if (process.server) {
                    const url = `${runtimeConfig.serverSideApiBaseUrl}api/analysis/login`
                    const { data: session } = await useFetch<{ session: 'ok', expire_date: string }>(url)
                    if (session.value !== null) sessionExpiryDate.value = session.value?.expire_date
                } else {
                    const { data: session } = await useFetch<{ session: 'ok', expire_date: string }>("/api/analysis/login")
                    console.log(session)
                    if (session.value !== null) sessionExpiryDate.value = session.value?.expire_date
    
                }
    
                const { csrfToken } = useCsrfToken()
                // const { csrf: csrfToken } = useCsrf()
                const toValToken = toValue(csrfToken)
                if (toValToken !== undefined) {
                    // Add Authorization header
                    if (Array.isArray(options.headers)) {
                        options.headers = options.headers || []
                        options.headers = [...options.headers, ["X-CSRFToken", toValToken]]
                    }
                    else {
                        options.headers = options.headers || {}
                        options.headers = { ...options.headers, "X-CSRFToken": toValToken }
                    }
    
    
                }
            },
            onResponseError({ response }) {
                console.log(response)
            }
        })
        // Expose to useNuxtApp().$api
        return {
            provide: {
                api: $api
            }
        }
    })