import { NextResponse } from "next/server";
import { z } from "zod";
import { validateSiteAgent } from "@/lib/site-agent/client";

const requestSchema = z.object({
  url: z.string().trim().url(),
  token: z.string().trim().min(12).max(500),
});

export async function POST(request: Request) {
  let input: unknown;
  try {
    input = await request.json();
  } catch {
    return NextResponse.json({ message: "Invalid request body." }, { status: 400 });
  }

  const parsed = requestSchema.safeParse(input);
  if (!parsed.success) return NextResponse.json({ message: "Enter a valid HTTPS site URL and token." }, { status: 400 });

  try {
    const result = await validateSiteAgent(parsed.data.url, parsed.data.token);
    return NextResponse.json(result);
  } catch (error) {
    const message = error instanceof Error ? error.message : "Unable to reach the site. Confirm the public URL, HTTPS, token, and Allow remote access setting.";
    const status = message.includes("public") || message.includes("HTTPS") ? 400 : 422;
    return NextResponse.json({ message }, { status });
  }
}
