import { metadata } from '@/app/metadata'
import { getAllPostsMeta } from '@/lib/posts'
const SITE_URL = process.env.SITE_URL || 'http://localhost:3000'
function escapeXml(str: string) {
return str
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''')
}
export async function GET(req: Request) {
const posts = getAllPostsMeta()
const updated =
posts.length > 0 ? new Date(posts[0].date).toISOString() : new Date().toISOString()
const entries = posts
.map((p) => {
const url = `${SITE_URL}/posts/${p.slug}`
const date = new Date(p.date).toISOString()
return `
${escapeXml(p.title)}
${url}
${date}
${date}
${escapeXml(p.description)}
`
})
.join('')
const feed = `
${SITE_URL}/
${escapeXml(metadata.title!.toString())}
${updated}
${escapeXml(metadata.creator!.toString())}
© ${new Date().getFullYear()} Frank Borisjuk
${entries}
`
const accept = req.headers.get('accept') || ''
const contentType = accept.includes('application/atom+xml')
? 'application/atom+xml; charset=utf-8'
: 'application/xml; charset=utf-8'
return new Response(feed, {
headers: { 'Content-Type': contentType },
})
}