diff --git a/src/handlers/main.ts b/src/handlers/main.ts index d0923ee..b67922c 100644 --- a/src/handlers/main.ts +++ b/src/handlers/main.ts @@ -1,7 +1,14 @@ import { IHandlerOutput } from "./handler.interface"; import { readability } from "./readability"; -export default function handlePage(url: string): Promise { +export default function handlePage( + url: string, + engine?: string +): Promise { + if (engine) { + return engines[engine](url); + } + const host = new URL(url).hostname; return fallback[host]?.(url) || fallback["*"](url); } diff --git a/src/routes/parseRoute.ts b/src/routes/parseRoute.ts index e23d7a1..7270a54 100644 --- a/src/routes/parseRoute.ts +++ b/src/routes/parseRoute.ts @@ -1,14 +1,12 @@ import NodeCache from "node-cache"; import { EngineRequest } from "../types/requests"; import { FastifyInstance } from "fastify"; -import { engines } from "../handlers/main"; +import handlePage from "../handlers/main"; export default function parseRoute(cache: NodeCache) { return async (fastify: FastifyInstance) => { fastify.get("/parse", async (req: EngineRequest) => { - const url = req.query.url; - const engine = req.query.engine || "readability"; - const parsed = await engines[engine](url); + const parsed = await handlePage(req.query.url, req.query.engine); cache.set(req.originalUrl || req.url, { content: parsed,