add middlewares to openapi-fetch

This commit is contained in:
maxDorninger
2025-08-21 21:25:06 +02:00
parent b147bb8434
commit ea6ece3286
2 changed files with 42 additions and 4 deletions

View File

@@ -1,6 +1,9 @@
import createClient from "openapi-fetch";
import type { paths } from "./api.d.ts";
import createClient from 'openapi-fetch';
import type { paths } from './api.d.ts';
import { env } from '$env/dynamic/public';
import { autoLogoutMiddleware, loggingMiddleware } from '$lib/api/middlewares.ts';
const client = createClient<paths>({ baseUrl: env.PUBLIC_API_URL });
export default client;
const client = createClient<paths>({ baseUrl: env.PUBLIC_API_URL, credentials: 'include' });
client.use(loggingMiddleware, autoLogoutMiddleware);
export default client;

View File

@@ -0,0 +1,35 @@
import { handleLogout } from '$lib/utils.ts';
import type { Middleware } from 'openapi-fetch';
export const loggingMiddleware: Middleware = {
async onRequest({ request }) {
console.log(`Requesting ${request.method} ${request.url}`);
return request;
},
async onResponse({ request, response }) {
if (!response.ok) {
console.error(`Request to ${request.url} failed with status ${response.status}`);
} else {
console.log(`Request to ${request.url} succeeded with status ${response.status}`);
}
return response;
},
async onError({ error }) {
return new Error('Oops, fetch failed', { cause: error });
}
};
export const autoLogoutMiddleware: Middleware = {
async onResponse({ request, response }) {
if (response.status === 401) {
console.log(`Request to ${request.url} returned HTTP Error Code 401, logging out...`);
await handleLogout();
}
if (response.status === 403) {
console.log(
`Request to ${request.url} returned HTTP Error Code 403, this shouldn't happen, consider opening a bug report!`
);
}
return response;
}
};