From cea7376e48cca786f3ae0189250d5842921a538f Mon Sep 17 00:00:00 2001 From: Hieuhuy Pham Date: Sun, 12 Jan 2025 21:37:18 -0500 Subject: [PATCH] Missing these from earlier commit --- src/app/api/feed/route.ts | 40 +++++++++++++++++++++++++++++++++++++++ src/app/feed/page.tsx | 5 +++++ 2 files changed, 45 insertions(+) create mode 100644 src/app/api/feed/route.ts create mode 100644 src/app/feed/page.tsx diff --git a/src/app/api/feed/route.ts b/src/app/api/feed/route.ts new file mode 100644 index 0000000..e173d86 --- /dev/null +++ b/src/app/api/feed/route.ts @@ -0,0 +1,40 @@ +import { NextResponse } from "next/server"; +import RSS from "rss"; +import { subDays } from "date-fns"; +import { fetchChaptersRSS } from "@/lib/api"; +import { Chapter } from "@/lib/types"; + + +const BASE_URL = process.env.BASE_URL || "http://localhost:3000"; + +export async function GET(){ + const now = new Date(); + const yesterday = subDays(now, 1); + + const data = await fetchChaptersRSS(); + + const feed = new RSS({ + title: "Null Translation Group", + description: "Null Translation Group main hub", + site_url: BASE_URL, + feed_url: `${BASE_URL}/api/feed`, + language: "en", + }); + + data.forEach((chapter: Chapter) => { + feed.item({ + title: chapter.book?.title + " - Chapter " + chapter.number + " " + chapter.title, + description: "Daily chapter release for " + chapter.book?.title, + url: `${BASE_URL}/books/${chapter.book?.documentId}/chapters/${chapter.documentId}`, + date: chapter.release_datetime, + }); + }); + + const xml = feed.xml({ indent: true }); + + return new Response(xml, { + headers: { + "Content-Type": "application/xml", + }, + }); +} \ No newline at end of file diff --git a/src/app/feed/page.tsx b/src/app/feed/page.tsx new file mode 100644 index 0000000..e9e626e --- /dev/null +++ b/src/app/feed/page.tsx @@ -0,0 +1,5 @@ +import { redirect } from 'next/navigation'; + +export default function FeedRedirect() { + redirect('/api/feed'); +} \ No newline at end of file