23 lines
722 B
TypeScript
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",
|
|
});
|
|
} |