mirror of
https://github.com/eliasstepanik/core.git
synced 2026-01-11 17:58:28 +00:00
37 lines
934 B
TypeScript
37 lines
934 B
TypeScript
import { z } from "zod";
|
|
import { createHybridLoaderApiRoute } from "~/services/routeBuilders/apiBuilder.server";
|
|
import { getFileFromS3 } from "~/lib/storage.server";
|
|
|
|
const ParamsSchema = z.object({
|
|
uuid: z.string().uuid("Invalid UUID format"),
|
|
});
|
|
|
|
const loader = createHybridLoaderApiRoute(
|
|
{
|
|
params: ParamsSchema,
|
|
corsStrategy: "all",
|
|
findResource: async (params) => {
|
|
// Return the UUID as the resource
|
|
return params?.uuid || null;
|
|
},
|
|
},
|
|
async ({ params, authentication }) => {
|
|
if (!params?.uuid) {
|
|
return new Response("UUID not provided", { status: 400 });
|
|
}
|
|
|
|
try {
|
|
const fileResponse = await getFileFromS3(
|
|
params.uuid,
|
|
authentication.userId,
|
|
);
|
|
return fileResponse;
|
|
} catch (error) {
|
|
console.error("File retrieval error:", error);
|
|
return new Response("File not found", { status: 404 });
|
|
}
|
|
},
|
|
);
|
|
|
|
export { loader };
|