From 3eb0594ac166175659b54c2923f1971526e778bf Mon Sep 17 00:00:00 2001 From: DIYgod Date: Mon, 8 May 2023 16:32:29 +0100 Subject: [PATCH] feat: feed hottest app router --- src/app/feed/hottest/route.tsx | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/app/feed/hottest/route.tsx diff --git a/src/app/feed/hottest/route.tsx b/src/app/feed/hottest/route.tsx new file mode 100644 index 00000000..672dc679 --- /dev/null +++ b/src/app/feed/hottest/route.tsx @@ -0,0 +1,28 @@ +import { SITE_URL } from "~/lib/env" +import { parsePost } from "~/lib/json-feed" +import { NextServerResponse } from "~/lib/server-helper" +import { ExpandedNote } from "~/lib/types" +import { getFeed } from "~/models/home.model" + +export async function GET(request: Request) { + const searchParams = new URLSearchParams(request.url.split("?")[1]) + + const feed = await getFeed({ + type: "hot", + daysInterval: parseInt(searchParams.get("interval") || "0"), + }) + + const data = { + version: "https://jsonfeed.org/version/1", + title: "xLog Latest", + icon: "https://ipfs.4everland.xyz/ipfs/bafkreigxdnr5lvtjxqin5upquomrti2s77hlgtjy5zaeu43uhpny75rbga", + home_page_url: `${SITE_URL}/activities`, + feed_url: `${SITE_URL}/feed/latest`, + items: feed?.list?.map((post: ExpandedNote) => parsePost(post)), + } + + const format = searchParams.get("format") === "xml" ? "xml" : "json" + + const res = new NextServerResponse() + return res.status(200).rss(data, format) +}