astro-ghostcms/packages/starlight-ghostcms/src/routes/rss.xml.ts

30 lines
823 B
TypeScript

import rss from "@astrojs/rss";
import type { APIContext } from "astro";
import { getAllPosts, getSettings, invariant } from "../utils/api";
const posts = await getAllPosts();
const settings = await getSettings();
import config from "virtual:starlight-ghost-config";
export async function GET({ site }: APIContext) {
invariant(settings, "Settings is not defined");
const title = config.title;
const description = config.rssDescription;
const ghostSite = settings.url;
return rss({
title: title,
description: description,
site: site ? site : ghostSite,
items: posts.map((post) => ({
title: post.title,
pubDate: new Date(
post.published_at ? post.published_at : post.created_at,
),
description: post.excerpt,
link: `/blog/${post.slug}/`,
author: post.primary_author?.name,
})),
});
}