import { Feed } from 'feed'; import { getPosts } from '@/lib/blog-query'; import { SITE_INFO } from '../metadata'; export async function GET() { try { const { posts } = await getPosts(); const feed = new Feed({ title: 'OpenCut Blog', description: SITE_INFO.description, id: `${SITE_INFO.url}`, link: `${SITE_INFO.url}/blog/`, language: 'en', image: `${SITE_INFO.openGraphImage}`, favicon: `${SITE_INFO.favicon}`, copyright: `All rights reserved ${new Date().getFullYear()}, ${ SITE_INFO.title }`, }); for (const post of posts) { feed.addItem({ title: post.title, id: `${SITE_INFO.url}/blog/${post.slug}`, link: `${SITE_INFO.url}/blog/${post.slug}`, description: post.description, author: post.authors.map((author) => ({ name: author.name, })), date: new Date(post.publishedAt), image: post.coverImage || SITE_INFO.openGraphImage, }); } return new Response(feed.rss2(), { headers: { 'Content-Type': 'text/xml', 'Cache-Control': 'public, max-age=86400, stale-while-revalidate', }, }); } catch (error) { console.error('Error generating RSS feed', error); return new Response('Internal Server Error', { status: 500 }); } }