import type { APIRoute } from 'astro';
import { requireAdmin } from '../../../lib/adminAuth';
import { storeImageBuffer } from '../../../lib/images';

export const POST: APIRoute = async (context) => {
  const unauthorized = requireAdmin(context);

  if (unauthorized) {
    return unauthorized;
  }

  const formData = await context.request.formData();
  const file = formData.get('image');

  if (!(file instanceof File) || file.size === 0) {
    return context.json({ error: 'فایل تصویری ارسال نشده است.' }, 400);
  }

  try {
    const storedImage = await storeImageBuffer(Buffer.from(await file.arrayBuffer()));
    return context.json(storedImage, 200);
  } catch {
    return context.json({ error: 'پردازش تصویر ناموفق بود.' }, 500);
  }
};
