import { allBlogs } from "content-collections";
import { siteConfig } from "@/lib/site";

const SITE_URL = siteConfig.url;

const CATEGORY_LABELS: Record<string, string> = {
  actualites: "Actualités",
  guides: "Guides",
  reglementation: "Réglementation",
  "cas-clients": "Cas clients",
};

function escapeXml(text: string): string {
  return text
    .replace(/&/g, "&amp;")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;")
    .replace(/'/g, "&apos;");
}

export async function GET() {
  const blogs = [...allBlogs]
    .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime())
    .slice(0, 50);

  const rssItems = blogs
    .map((blog) => {
      const url = `${SITE_URL}/${blog.category}/${blog.slug}/`;
      const pubDate = new Date(blog.date).toUTCString();
      const lastMod = blog.lastmod
        ? new Date(blog.lastmod).toUTCString()
        : pubDate;
      const categoryLabel = CATEGORY_LABELS[blog.category] || blog.category;
      const imageUrl = blog.image
        ? `${SITE_URL}${blog.image}`
        : null;

      return `
    <item>
      <title>${escapeXml(blog.title)}</title>
      <link>${url}</link>
      <description>${escapeXml(blog.description)}</description>
      <content:encoded><![CDATA[<p>${blog.description}</p><p><a href="${url}">Lire l'article complet sur Acieb Énergie</a></p>]]></content:encoded>
      <pubDate>${pubDate}</pubDate>
      <atom:updated>${lastMod}</atom:updated>
      <guid isPermaLink="true">${url}</guid>
      <category>${escapeXml(categoryLabel)}</category>
      <author>${escapeXml(blog.author)}</author>${imageUrl ? `\n      <media:content url="${escapeXml(imageUrl)}" medium="image" />\n      <media:thumbnail url="${escapeXml(imageUrl)}" />` : ""}
    </item>`;
    })
    .join("");

  const rss = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
  <channel>
    <title>Acieb Énergie - Blog</title>
    <link>${SITE_URL}</link>
    <description>Actualités, guides et conseils pour optimiser vos contrats d'énergie professionnels. Courtier en énergie B2B pour PME, ETI et industries.</description>
    <language>fr-FR</language>
    <lastBuildDate>${new Date().toUTCString()}</lastBuildDate>
    <atom:link href="${SITE_URL}/feed.xml" rel="self" type="application/rss+xml"/>
    <sy:updatePeriod>weekly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <image>
      <url>${SITE_URL}/logo.png</url>
      <title>Acieb Énergie</title>
      <link>${SITE_URL}</link>
    </image>
    ${rssItems}
  </channel>
</rss>`;

  return new Response(rss, {
    headers: {
      "Content-Type": "application/rss+xml; charset=utf-8",
      "Cache-Control": "public, max-age=3600, s-maxage=3600",
    },
  });
}
