astro/src/pages/blog/rss.xml.ts
2025-01-19 23:21:07 -05:00

23 lines
722 B
TypeScript

import type { APIRoute } from "astro";
import { getCollection } from "astro:content";
import rss from "@astrojs/rss";
import MarkdownIt from "markdown-it";
import sanitize from "sanitize-html";
const parser = new MarkdownIt();
export const GET: APIRoute = async (context) => {
const blog = await getCollection("blog");
return rss({
title: "haetae's blog",
description: "a blog about a weirdo who likes coding",
site: context.site!,
items: blog.map(entry => ({
link: `/blog/${entry.id}`,
content: sanitize(parser.render(entry.body!), {
allowedTags: sanitize.defaults.allowedTags.concat(["img"]),
}),
...entry.data,
})),
stylesheet: "/pretty-feed-v3.xsl",
});
}