import { NextResponse } from "next/server";
import fs from "fs";
import path from "path";

export async function GET(request, { params }) {
  try {
    const paths = (await params).path.join("/");
    const fullpath = path.join(process.cwd(), "/public/media", paths);

    if (!fs.existsSync(fullpath))
      return NextResponse.json({ error: "not found" }, { status: 404 });

    const fileBuffer = fs.readFileSync(fullpath);
    const filestat = fs.statSync(fullpath);
    const ext = path.extname(fullpath).toLowerCase();
    const mimeTypes = {
      ".jpg": "image/jpeg",
      ".jpeg": "image/jpeg",
      ".png": "image/png",
      ".gif": "image/gif",
      ".webp": "image/webp",
      ".svg": "image/svg+xml",
    };

    return new NextResponse(fileBuffer, {
      status: 200,
      headers: {
        "Content-Type": mimeTypes[ext] || "application/octet-stream",
        "Access-Control-Allow-Origin": "*",
        "Content-Length": filestat.size.toString(),
        "Cache-Control": "public, max-age=31536000, immutable",
        "Last-Modified": filestat.mtime.toUTCString(),
        ETag: `"${filestat.mtime.getTime()}-${filestat.size}"`,
      },
    });
  } catch (error) {
    return NextResponse.json({ error: error.message }, { status: 404 });
  }
}
