import { getAllPosts } from "@/lib/devblog";
import { SITE_URL } from "@/lib/site";
const SITE_TITLE = "Highland Games Studio — Devblog";
const SITE_DESCRIPTION =
"Behind-the-scenes updates, design decisions, and milestones from Highland Games Studio.";
function escapeXml(input: string): string {
return input
.replace(/&/g, "&")
.replace(//g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
export async function GET() {
const posts = getAllPosts();
const lastBuildDate = new Date().toUTCString();
const latest = posts[0];
const pubDate = latest
? new Date(latest.date).toUTCString()
: lastBuildDate;
const items = posts
.map((post) => {
const url = `${SITE_URL}/devblog/${post.slug}`;
return `
-
${escapeXml(post.title)}
${url}
${url}
${new Date(post.date).toUTCString()}
${post.author ? `${escapeXml(post.author)}` : ""}
${escapeXml(post.excerpt || "")}
`;
})
.join("");
const xml = `
${escapeXml(SITE_TITLE)}
${SITE_URL}/devblog
${escapeXml(SITE_DESCRIPTION)}
en
${lastBuildDate}
${pubDate}
${items}
`;
return new Response(xml, {
headers: {
"Content-Type": "application/rss+xml; charset=utf-8",
"Cache-Control": "public, max-age=0, s-maxage=3600, stale-while-revalidate=86400",
},
});
}