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(); } }