import { Handlers } from "$fresh/server.ts"; import { Status, STATUS_TEXT } from "https://deno.land/std@0.195.0/http/mod.ts"; import { fromFileUrl, join } from "$std/path/mod.ts"; export const handler: Handlers = { async GET(req, ctx): Promise { const headers = new Headers({ "content-type": "application/json" }); const path = join(fromFileUrl(import.meta.url), "../../../../dist", `${ctx.params.name}.json`); console.log("path : ",path) let stat; try { stat = await Deno.stat(path); } catch(err){ if(err instanceof Deno.errors.NotFound){ return await ctx.renderNotFound(); } else { throw err; } } const mtime = stat.mtime ?? new Date(0); const body = await Deno.readTextFile(path); headers.set("last-modified", mtime.toUTCString()); const ifModifiedSinceValue = req.headers.get("if-modified-since"); if ( ifModifiedSinceValue && mtime.getTime() != new Date(ifModifiedSinceValue).getTime() ){ return new Response(null, { status: Status.NotModified, statusText: STATUS_TEXT[Status.NotModified] }) } return new Response(body, {headers}); }, };