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 },
})
}