30 lines
1.0 KiB
TypeScript
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");
|
|
}
|
|
};
|