2025-03-17 15:23:21 +01:00

52 lines
1.6 KiB
TypeScript

import { AppVersion } from "@/lib/types";
import { promises as fs } from "fs";
import { NextResponse } from "next/server";
import path from "path";
export const dynamic = "force-static";
const jsonDir = "public/json";
const versionsFileName = "versions.json";
const encoding = "utf-8";
const getVersions = async () => {
const filePath = path.resolve(jsonDir, versionsFileName);
const fileContent = await fs.readFile(filePath, encoding);
const versions: AppVersion = JSON.parse(fileContent);
return versions;
};
export async function GET(request: Request) {
try {
const { searchParams } = new URL(request.url);
const slug = searchParams.get("slug");
if (!slug) {
return NextResponse.json({ error: "Missing slug parameter" }, { status: 400 });
}
console.log("Slug: ", slug);
const versions = await getVersions();
const cleanedSlug = slug.toLowerCase().replace(/[^a-z0-9]/g, '');
const matchedVersion = Object.values(versions).find(
(version: AppVersion) => {
const versionNameParts = version.name.split('/');
const cleanedVersionName = versionNameParts[1]?.toLowerCase().replace(/[^a-z0-9]/g, '');
return cleanedVersionName === cleanedSlug;
}
);
console.log("Matched Version: ", matchedVersion);
if (!matchedVersion) {
return NextResponse.json({name: "No version found", version: "No Version found"});
}
return NextResponse.json(matchedVersion);
} catch (error) {
const msg = console.error(error);
return NextResponse.json({name: msg, version: "No version found - Error"});
}
}