/
trixden
/
prerender
Обзор
Документация
Войти
/
trixden
/
prerender
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/hooks/cache-checker.ts
28 строк
1003 B
Denis Karimov
System files
07 авг 2023, 21:09
07 авг 2023, 21:09
cdc3781
Код
Авторство
О чём код?
import fs from 'fs'; import { Static } from "@sinclair/typebox"; import { RawReplyDefaultExpression, RawRequestDefaultExpression, RawServerDefault, preHandlerAsyncHookHandler } from "fastify"; import { homeQueryStringSchema } from "../schemas/home.schema"; import { getFile, getFileExist, getFileStat, getPathFromUrl } from '../helpers/filesystem'; export const cacheCheckerHook: preHandlerAsyncHookHandler< RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression, {Querystring: Static<typeof homeQueryStringSchema>} > = async function (req, res) { const path = getPathFromUrl(req.query.url); if (await getFileExist(path)) { const stat = await getFileStat(path); if (stat.mtimeMs > (Date.now() - (Number(process.env.CACHE_LIFETIME) * 60 * 1000))) { const object = await getFile(path); res.hijack(); res.raw.statusCode = object.status; res.raw.setHeader('Content-Type', object.contentType).end(object.payload) return; } } }