import { NextResponse } from 'next/server'
import { requireAdmin } from '@/lib/auth'
import { validateUpdatePackage } from '@/lib/update-system'

export async function POST(request: Request) {
  try {
    const adminCheck = await requireAdmin()
    if (adminCheck) return adminCheck

    const formData = await request.formData()
    const file = formData.get('file') as File

    if (!file) {
      return NextResponse.json({ error: 'No file provided' }, { status: 400 })
    }

    if (!file.name.endsWith('.zip')) {
      return NextResponse.json({ error: 'File must be a ZIP archive' }, { status: 400 })
    }

    const arrayBuffer = await file.arrayBuffer()
    const buffer = Buffer.from(arrayBuffer)

    const validation = await validateUpdatePackage(buffer)

    if (!validation.valid) {
      return NextResponse.json(
        { error: validation.errors.join(', ') || 'Invalid update package' },
        { status: 400 }
      )
    }

    return NextResponse.json({
      valid: true,
      manifest: validation.manifest
    })
  } catch (error) {
    console.error('Package validation failed:', error)
    return NextResponse.json(
      { error: 'Failed to validate package' },
      { status: 500 }
    )
  }
}
