26 lines
820 B
TypeScript
26 lines
820 B
TypeScript
import { SITE } from '@/consts'
|
|
import rss from '@astrojs/rss'
|
|
import type { APIContext } from 'astro'
|
|
import { getCollection } from 'astro:content'
|
|
|
|
export async function GET(context: APIContext) {
|
|
try {
|
|
const posts = await getCollection('blog', ({ data }) => !data.draft)
|
|
posts.sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf())
|
|
|
|
return rss({
|
|
title: SITE.title,
|
|
description: SITE.description,
|
|
site: context.site ?? SITE.href,
|
|
items: posts.map((post) => ({
|
|
title: post.data.title,
|
|
description: post.data.description,
|
|
pubDate: post.data.date,
|
|
link: `/blog/${post.id}/`,
|
|
})),
|
|
})
|
|
} catch (error) {
|
|
console.error('Error generating RSS feed:', error)
|
|
return new Response('Error generating RSS feed', { status: 500 })
|
|
}
|
|
}
|