import React from "react";
import { NextPageContext } from "next";
const blogPostsRssXml = (blogPosts: IBlogPost[]) => {
let latestPostDate: string = "";
let rssItemsXml = "";
blogPosts.forEach(post => {
const postDate = Date.parse(post.createdAt);
if (!latestPostDate || postDate > Date.parse(latestPostDate)) {
latestPostDate = post.createdAt;
}
rssItemsXml += `
-
${post.title}
${post.href}
${post.createdAt}
`;
});
return {
rssItemsXml,
latestPostDate
};
};
const getRssXml = (blogPosts: IBlogPost[]) => {
const { rssItemsXml, latestPostDate } = blogPostsRssXml(blogPosts);
return `
Blog by Fredrik Bergqvist
https://www.bergqvist.it
${shortSiteDescription}
en
${latestPostDate}
${rssItemsXml}
`;
};
export default class Rss extends React.Component {
static async getInitialProps({ res }: NextPageContext) {
if (!res) {
return;
}
const blogPosts = getRssBlogPosts();
res.setHeader("Content-Type", "text/xml");
res.write(getRssXml(blogPosts));
res.end();
}
}