Files
000_notes/aastock/1/blog/app/rss/route.ts
louiscklaw 8013ac2455 update,
2025-02-01 20:19:28 +08:00

43 lines
1.0 KiB
TypeScript

import { baseUrl } from 'app/sitemap'
import { getBlogPosts } from 'app/blog/utils'
export async function GET() {
let allBlogs = await getBlogPosts()
const itemsXml = allBlogs
.sort((a, b) => {
if (new Date(a.metadata.publishedAt) > new Date(b.metadata.publishedAt)) {
return -1
}
return 1
})
.map(
(post) =>
`<item>
<title>${post.metadata.title}</title>
<link>${baseUrl}/blog/${post.slug}</link>
<description>${post.metadata.summary || ''}</description>
<pubDate>${new Date(
post.metadata.publishedAt
).toUTCString()}</pubDate>
</item>`
)
.join('\n')
const rssFeed = `<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>My Portfolio</title>
<link>${baseUrl}</link>
<description>This is my portfolio RSS feed</description>
${itemsXml}
</channel>
</rss>`
return new Response(rssFeed, {
headers: {
'Content-Type': 'text/xml',
},
})
}