import FileList from "@/lib/cpanel/api3/Fileman/listfiles";
import { getCpanelVars } from "@/models/cpanel";
import { DBEType } from "@/models/ErrorType";
import { postServerLog } from "@/services/logs";
import { NextRequest, NextResponse } from "next/server";

export async function GET(req: NextRequest) {
  const cpanel = getCpanelVars();
  const url = req.nextUrl.searchParams.get("url");

  try {
    if (!url) throw new Error("No URL was provided");

    const folder = url.match(/https:\/\/(.*?)\.fedgovadv\.info/)?.[1];

    if (!folder) throw new Error("Invalid URL provided");

    const formated = `FEDSITE_${folder}`;
    const dir = `/home/${cpanel.user}/${formated}`;

    const filesResult = await FileList({ dir: `${dir}/files` });

    if (filesResult.data.length === 0) {
      return new NextResponse(null, {
        status: 404,
        statusText: `The folder doesn't have any files`,
      });
    }

    const file = filesResult.data
      .map((f: FilemanFile) => {
        const fileUrl = `${url}/files/${f.file}`;
        return {
          name: f.file,
          url: fileUrl,
          mtime: f.mtime,
        };
      })
      .reduce((p, c) => (p.mtime > c.mtime ? p : c));

    return NextResponse.json({ file }, { status: 200 });
  } catch (error) {
    await postServerLog({ type: DBEType.ERROR, log: error });
    return new NextResponse(null, {
      status: 500,
      statusText: `Can't get marketing data cause ${error.message}, please try again later or contact support for assistance.`,
    });
  }
}
