import { NextResponse } from "next/server";
import { getFile, putFile, deleteFile } from "@/lib/github";
function checkAdmin(request) {
const token = request.headers.get("x-admin-token");
return token && token === process.env.ADMIN_PASSWORD;
}
export async function GET(request) {
const { searchParams } = new URL(request.url);
const path = searchParams.get("path");
if (!path)
return NextResponse.json({ error: "path required" }, { status: 400 });
try {
const file = await getFile(path);
return NextResponse.json(file);
} catch (err) {
return NextResponse.json({ error: err.message }, { status: 500 });
}
}
export async function PUT(request) {
if (!checkAdmin(request)) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
const { path, content, sha, message } = await request.json();
if (!path || content === undefined) {
return NextResponse.json(
{ error: "path and content required" },
{ status: 400 },
);
}
try {
const result = await putFile(path, content, sha, message);
return NextResponse.json(result);
} catch (err) {
return NextResponse.json({ error: err.message }, { status: 500 });
}
}
export async function DELETE(request) {
if (!checkAdmin(request)) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
const { path, sha, message } = await request.json();
if (!path || !sha) {
return NextResponse.json(
{ error: "path and sha required" },
{ status: 400 },
);
}
try {
const result = await deleteFile(path, sha, message);
return NextResponse.json(result);
} catch (err) {
return NextResponse.json({ error: err.message }, { status: 500 });
}
}