diff options
Diffstat (limited to 'src/pages/rss.xml.ts')
| -rw-r--r-- | src/pages/rss.xml.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/pages/rss.xml.ts b/src/pages/rss.xml.ts new file mode 100644 index 0000000..f8831b7 --- /dev/null +++ b/src/pages/rss.xml.ts @@ -0,0 +1,37 @@ +import { getRssString } from '@astrojs/rss'; + +import { SITE, METADATA, APP_BLOG } from 'astrowind:config'; +import { fetchPosts } from '~/utils/blog'; +import { getPermalink } from '~/utils/permalinks'; + +export const GET = async () => { + if (!APP_BLOG.isEnabled) { + return new Response(null, { + status: 404, + statusText: 'Not found', + }); + } + + const posts = await fetchPosts(); + + const rss = await getRssString({ + title: `${SITE.name}’s Blog`, + description: METADATA?.description || '', + site: import.meta.env.SITE, + + items: posts.map((post) => ({ + link: getPermalink(post.permalink, 'post'), + title: post.title, + description: post.excerpt, + pubDate: post.publishDate, + })), + + trailingSlash: SITE.trailingSlash, + }); + + return new Response(rss, { + headers: { + 'Content-Type': 'application/xml', + }, + }); +}; |
