summaryrefslogtreecommitdiff
path: root/src/app/rss.xml
diff options
context:
space:
mode:
authorBertrand Yuan <bert.yuan@outlook.com>2025-12-16 00:25:04 +0800
committerGitHub <noreply@github.com>2025-12-16 00:25:04 +0800
commit39c83fbb69ef06d2d56790d75abc254ba7e34394 (patch)
treedd006593448c3500bdcb414af3b4656f7a7683d4 /src/app/rss.xml
parent48b07bc308a35734a6a7a305c8fdccbfa47de7d8 (diff)
parent785371bb3eccca455e5ce5fccbe9b6e3752a03f6 (diff)
Merge pull request #1 from bertyuan/feat-introduce-payloadv1.0
Feat: introduce payload
Diffstat (limited to 'src/app/rss.xml')
-rw-r--r--src/app/rss.xml/route.ts66
1 files changed, 0 insertions, 66 deletions
diff --git a/src/app/rss.xml/route.ts b/src/app/rss.xml/route.ts
deleted file mode 100644
index 6a3acf6..0000000
--- a/src/app/rss.xml/route.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { description, title } from '@/app/layout.config';
-import { owner } from '@/app/layout.config';
-import { baseUrl } from '@/lib/constants';
-import { getPosts } from '@/lib/source';
-import { Feed } from 'feed';
-
-export const dynamic = 'force-static';
-
-const escapeForXML = (str: string) => {
- return str
- .replace(/&/g, '&amp;')
- .replace(/</g, '&lt;')
- .replace(/>/g, '&gt;')
- .replace(/"/g, '&quot;')
- .replace(/'/g, '&apos;');
-};
-
-export const GET = () => {
- const feed = createFeed();
-
- return new Response(feed.atom1(), {
- headers: {
- 'Content-Type': 'application/xml',
- },
- });
-};
-
-function createFeed(): Feed {
- const feed = new Feed({
- title,
- description,
- id: baseUrl.href,
- language: 'en',
- copyright: `All rights reserved ${new Date().getFullYear()}, ${owner}`,
- image: new URL('/banner.png', baseUrl).href,
- favicon: new URL('/favicon.ico', baseUrl).href,
- link: baseUrl.href,
- feed: new URL('/api/rss.xml', baseUrl).href,
- updated: new Date(),
- });
-
- const posts = getPosts();
- for (const post of posts) {
- feed.addItem({
- title: post.data.title,
- description: post.data.description,
- link: new URL(post.url, baseUrl).href,
- image: {
- title: post.data.title,
- type: 'image/png',
- url: escapeForXML(
- new URL(`/og/${post.slugs.join('/')}/image.png`, baseUrl.href).href,
- ),
- },
- date: post.data.date,
- author: [
- {
- name: post.data.author,
- // link: new URL('/about', baseUrl).href,
- },
- ],
- });
- }
-
- return feed;
-}