import { NextRequest, NextResponse } from "next/server"; import { ScrapydClient } from "@/lib/scrapyd-client"; export async function GET(request: NextRequest) { try { const searchParams = request.nextUrl.searchParams; const project = searchParams.get("project"); if (!project) { return NextResponse.json( { error: "Project name is required" }, { status: 400 } ); } const data = await ScrapydClient.listJobs({ project }); return NextResponse.json(data); } catch (error) { console.error("Failed to fetch jobs:", error); return NextResponse.json( { error: "Failed to fetch jobs" }, { status: 500 } ); } } export async function POST(request: NextRequest) { try { const body = await request.json(); const { project, spider, jobid, settings, args } = body; if (!project || !spider) { return NextResponse.json( { error: "Project and spider are required" }, { status: 400 } ); } const data = await ScrapydClient.scheduleJob({ project, spider, jobid, settings, args, }); return NextResponse.json(data); } catch (error) { console.error("Failed to schedule job:", error); return NextResponse.json( { error: "Failed to schedule job" }, { status: 500 } ); } } export async function DELETE(request: NextRequest) { try { const body = await request.json(); const { project, job } = body; if (!project || !job) { return NextResponse.json( { error: "Project and job ID are required" }, { status: 400 } ); } const data = await ScrapydClient.cancelJob({ project, job }); return NextResponse.json(data); } catch (error) { console.error("Failed to cancel job:", error); return NextResponse.json( { error: "Failed to cancel job" }, { status: 500 } ); } }