import { NextResponse } from "next/server";
import { respostaDasCamadas } from "@/lib/banner-editor/camadas-do-servidor";
import { paginasDoDocumento } from "@/lib/banner-editor/documento";
import { podeUsar } from "@/lib/banner-editor/limite-de-uso";
import { arteDoLink } from "@/lib/banner-editor/link-publico";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";
export const maxDuration = 180;

/**
 * As camadas do MP4 pelo link público (/arte/<código>): a página vem do banco
 * pelo código e pelo número dela; o pedido só diz qual página (e os valores
 * do número que sobe). O vídeo é montado no navegador de quem abriu.
 */
export async function POST(req: Request, { params }: { params: Promise<{ codigo: string }> }) {
  const { codigo } = await params;
  const arte = await arteDoLink(codigo);
  if (!arte) return NextResponse.json({ error: "Este link não abre mais." }, { status: 404, headers: { "Cache-Control": "no-store" } });
  const ip = (req.headers.get("cf-connecting-ip") || req.headers.get("x-forwarded-for") || "").split(",")[0].trim() || "sem-endereco";
  if (!podeUsar(`arte-publica:camadas:${ip}`, 150, 60 * 60 * 1000)) return NextResponse.json({ error: "Muitos vídeos seguidos. Espere alguns minutos e tente de novo." }, { status: 429, headers: { "Cache-Control": "no-store" } });
  const corpo = ((await req.json().catch(() => null)) ?? {}) as { pagina?: unknown; limite?: unknown; contador?: { id?: unknown; valores?: unknown } };
  const paginas = paginasDoDocumento(arte.documento);
  const indice = Math.round(Number(corpo.pagina) || 0);
  return respostaDasCamadas(paginas[indice], { limite: corpo.limite, contador: corpo.contador });
}
