import {NextResponse} from "next/server"; interface SitemapRoute { url: string; lastModified: string; changeFrequency?: | "always" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | "never"; priority?: number; } const baseUrl = "https://dki.one"; export async function GET() { console.log("Generating sitemap..."); const staticRoutes: SitemapRoute[] = [ {url: `${baseUrl}/`, lastModified: new Date().toISOString(), changeFrequency: "weekly", priority: 1.0}, { url: `${baseUrl}/privacy-policy`, lastModified: new Date().toISOString(), changeFrequency: "yearly", priority: 0.3 }, { url: `${baseUrl}/legal-notice`, lastModified: new Date().toISOString(), changeFrequency: "yearly", priority: 0.3 }, ]; try { const response = await fetch(`${baseUrl}/api/sitemap`); if (!response.ok) { console.error(`Failed to fetch dynamic routes: ${response.statusText}`); } const dynamicRoutes = (await response.json()) as SitemapRoute[]; const sitemap = [...staticRoutes, ...dynamicRoutes]; return new NextResponse(generateXml(sitemap), { headers: {"Content-Type": "application/xml"}, }); } catch (error) { console.error("Error fetching dynamic routes, using fallback:", error); return new NextResponse(generateXml(staticRoutes), { headers: {"Content-Type": "application/xml"}, }); } } function generateXml(routes: SitemapRoute[]): string { const xmlHeader = ''; const urlsetOpen = ''; const urlsetClose = ''; const urlEntries = routes .map( (route) => ` ${route.url} ${route.lastModified} ${route.changeFrequency ? `${route.changeFrequency}` : ""} ${route.priority ? `${route.priority}` : ""} ` ) .join(""); return `${xmlHeader}${urlsetOpen}${urlEntries}${urlsetClose}`; }