lunasqu.ee-nuxt/server/routes/blog/atom.xml.ts

47 lines
1.2 KiB
TypeScript

import { Feed } from 'feed';
import { getFilteredBlogPosts } from '~~/lib/blog/read-posts';
const BASE_URL = 'https://lunasqu.ee/blog';
export default defineEventHandler(async (event) => {
const posts = await getFilteredBlogPosts(undefined, true, false);
const feed = new Feed({
title: "Evert's Blog",
description: 'Projects and Tutorials',
id: BASE_URL,
link: BASE_URL,
copyright: 'Evert "Diamond" Prants 2022',
language: 'en',
updated: new Date(posts[0].date),
generator: 'https://gitlab.icynet.eu/evert/lunasqu.ee-nuxt',
feedLinks: {
atom: `${BASE_URL}/atom.xml`,
},
});
posts.forEach((post) => {
const description = post.summary
.replace(/<[^>]*>?/gm, '')
.replace('\n', ' ')
.substring(0, 240);
feed.addItem({
title: post.title,
id: `${BASE_URL}/${post.fullSlug}`,
link: `${BASE_URL}/${post.fullSlug}`,
description,
content: post.html,
date: new Date(post.date),
published: new Date(post.date),
category: post.tags.map((tag) => ({
term: tag,
scheme: `${BASE_URL}/tags/${tag}`,
})),
});
});
appendResponseHeader(event, 'Content-Type', 'text/xml');
return feed.atom1();
});