const PUBLIC_SERVER_URL = process.env['PUBLIC_SERVER_URL']; const endpoint = PUBLIC_SERVER_URL || 'http://localhost:8000'; import { json } from '@sveltejs/kit'; /** @type {import('./$types').RequestHandler} */ export async function GET({ url, params, request, fetch, cookies }) { // add the param format = json to the url or add additional if anothre param is already present if (url.search) { url.search = url.search + '&format=json'; } else { url.search = '?format=json'; } return handleRequest(url, params, request, fetch, cookies); } /** @type {import('./$types').RequestHandler} */ export async function POST({ url, params, request, fetch, cookies }) { return handleRequest(url, params, request, fetch, cookies, true); } export async function PATCH({ url, params, request, fetch, cookies }) { return handleRequest(url, params, request, fetch, cookies, true); } export async function PUT({ url, params, request, fetch, cookies }) { return handleRequest(url, params, request, fetch, cookies, true); } export async function DELETE({ url, params, request, fetch, cookies }) { return handleRequest(url, params, request, fetch, cookies, true); } // Implement other HTTP methods as needed (PUT, DELETE, etc.) async function handleRequest( url: any, params: any, request: any, fetch: any, cookies: any, requreTrailingSlash: boolean | undefined = false ) { const path = params.path; let targetUrl = `${endpoint}/api/${path}${url.search}`; if (requreTrailingSlash && !targetUrl.endsWith('/')) { targetUrl += '/'; } const headers = new Headers(request.headers); const authCookie = cookies.get('auth'); if (authCookie) { headers.set('Cookie', `${authCookie}`); } try { const response = await fetch(targetUrl, { method: request.method, headers: headers, body: request.method !== 'GET' && request.method !== 'HEAD' ? await request.text() : undefined }); if (response.status === 204) { // For 204 No Content, return a response with no body return new Response(null, { status: 204, headers: response.headers }); } const responseData = await response.text(); return new Response(responseData, { status: response.status, headers: response.headers }); } catch (error) { console.error('Error forwarding request:', error); return json({ error: 'Internal Server Error' }, { status: 500 }); } }