Files
schreifuchs.ch/src/routes/assets/[...path]/+server.ts
T
2026-01-20 18:39:07 +01:00

30 lines
1.0 KiB
TypeScript

import { client } from "$lib/server/nextcloud";
import { error } from "@sveltejs/kit";
import type { RequestHandler } from "./$types";
import mime from "mime-types";
export const GET: RequestHandler = async ({ params }) => {
const { path } = params;
if (!path) {
throw error(400, "Path is required");
}
try {
// Fetch from Nextcloud. We assume the path is relative to the root or a specific folder.
// If your files are in a specific folder, e.g., "Schreifuchs", prepend it here.
const buffer = await client.getFileContents("/" + path);
const contentType = mime.lookup(path) || "application/octet-stream";
return new Response(buffer as any, {
headers: {
"Content-Type": contentType,
"Cache-Control": "public, max-age=3600" // Cache for 1 hour
}
});
} catch (e) {
console.error(`Error fetching asset from Nextcloud: ${path}`, e);
throw error(404, "Asset not found");
}
};