| import { NextRequest, NextResponse } from "next/server"; |
| import { browserManager } from "@/lib/browser/playwright"; |
|
|
| export async function POST(req: NextRequest) { |
| try { |
| const { action, payload } = await req.json(); |
|
|
| switch (action) { |
| case "navigate": |
| if (!payload?.url) return NextResponse.json({ error: "URL required" }, { status: 400 }); |
| const finalUrl = await browserManager.navigate(payload.url); |
| return NextResponse.json({ url: finalUrl }); |
|
|
| case "click": |
| if (!payload?.selector) return NextResponse.json({ error: "Selector required" }, { status: 400 }); |
| await browserManager.click(payload.selector); |
| return NextResponse.json({ success: true }); |
|
|
| case "type": |
| if (!payload?.selector || !payload?.text) return NextResponse.json({ error: "Selector and text required" }, { status: 400 }); |
| await browserManager.type(payload.selector, payload.text); |
| return NextResponse.json({ success: true }); |
|
|
| case "snapshot": |
| const data = await browserManager.getSnapshot(); |
| return NextResponse.json(data); |
|
|
| case "close": |
| await browserManager.close(); |
| return NextResponse.json({ success: true }); |
|
|
| default: |
| return NextResponse.json({ error: "Unknown action" }, { status: 400 }); |
| } |
| } catch (e: unknown) { |
| const error = e instanceof Error ? e : new Error(String(e)); |
| console.error("Browser API Error:", error); |
| return NextResponse.json({ error: error.message }, { status: 500 }); |
| } |
| } |
|
|