import { listPosts } from '~~/server/utils/posts'
import { getSiteData } from '~~/server/utils/site'
const escape = (s: string) =>
s.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
export default defineEventHandler(async (event) => {
const base = useRuntimeConfig().public.siteUrl.replace(/\/+$/, '')
const posts = (await listPosts()).filter((p) => !p.draft).slice(0, 30)
const site = await getSiteData()
const items = posts
.map(
(post) => ` -
${escape(post.title)}
${base}/blog/${post.slug}
${base}/blog/${post.slug}
${new Date(post.date).toUTCString()}
${escape(post.description)}
${post.tags.map((t) => ` ${escape(t)}`).join('\n')}
`,
)
.join('\n')
const xml = `
${escape(site.domain)}
${base}
${escape(site.description)}
en
${new Date().toUTCString()}
${items}
`
setHeader(event, 'content-type', 'application/rss+xml; charset=utf-8')
setHeader(event, 'cache-control', 'public, max-age=600')
return xml
})