Fix imports, remove unnecessary imports, and replace all single apostrophe to double apostrophes
71 lines
1.9 KiB
TypeScript
71 lines
1.9 KiB
TypeScript
import { getAllAlbums } from "@/content/photos/albums";
|
|
import { getSettings } from "@/content/settings/settings";
|
|
import { getAlbumRoute } from "@/lib/routing";
|
|
import type { APIRoute } from "astro";
|
|
import minifyXML from "minify-xml";
|
|
|
|
export const GET = (async ({ params }) => {
|
|
const settings = await getSettings();
|
|
|
|
if (!settings.photo.enabled) {
|
|
return new Response(null, {
|
|
status: 204,
|
|
statusText: "Not Found"
|
|
});
|
|
}
|
|
|
|
const currentPage = params.page;
|
|
|
|
const albums = await getAllAlbums(settings);
|
|
const selectedAlbums = albums.slice(
|
|
((Number(currentPage) - 1) * settings.sitemap.perPage),
|
|
Number(currentPage) * settings.sitemap.perPage - 1
|
|
);
|
|
|
|
let pages: SitemapPage[] = [];
|
|
|
|
selectedAlbums.forEach((album) => {
|
|
pages.push({
|
|
url: getAlbumRoute(settings.photo, album),
|
|
lastModified: album.lastModified
|
|
});
|
|
});
|
|
|
|
let sitemapContent = `
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
${pages.map((page) => `
|
|
<sitemap>
|
|
<loc>${settings.website.domainName}${page.url}</loc>
|
|
<lastmod>${page.lastModified.toISOString()}</lastmod>
|
|
</sitemap>
|
|
`).join("")}
|
|
</sitemapindex>
|
|
`;
|
|
|
|
return new Response(minifyXML(sitemapContent), {
|
|
status: 200,
|
|
statusText: "OK",
|
|
headers: {
|
|
"Content-Type": "application/xml"
|
|
}
|
|
});
|
|
}) satisfies APIRoute;
|
|
|
|
export async function getStaticPaths() {
|
|
const settings = await getSettings();
|
|
const albums = await getAllAlbums(settings);
|
|
|
|
const albumCount = albums.length;
|
|
const perPage = settings.sitemap.perPage;
|
|
const pages = Math.ceil(albumCount / perPage);
|
|
|
|
let items: any[] = [];
|
|
|
|
for (let i = 0; i < pages; i++) {
|
|
items.push({ params: { page: (i + 1).toString() } });
|
|
}
|
|
|
|
return items;
|
|
}
|