import crypto from 'node:crypto';
import { currentUser } from '@/lib/auth';
import { putObject } from '@/lib/storage';
import { rateLimit } from '@/lib/http';
import { logoType } from '@/lib/logo';
import { TOUR_MAX_BYTES } from '@/lib/photos';
export const dynamic = 'force-dynamic';

/** 360° (equirectangular) fotoğraf yükleme. İstemci yeniden boyutlandırıp JPEG'e çevirir. */
export async function POST(req: Request) {
  const u = await currentUser(); if (!u) return Response.json({ error: 'Giriş gerekli' }, { status: 401 });
  if (!await rateLimit(`tour:${u.id}`, 30, 60 * 60_000)) return Response.json({ error: 'Çok fazla yükleme' }, { status: 429 });
  const f = (await req.formData().catch(() => null))?.get('tour');
  if (!(f instanceof File)) return Response.json({ error: '360° fotoğraf seçin' }, { status: 400 });
  if (f.size > TOUR_MAX_BYTES) return Response.json({ error: 'Fotoğraf çok büyük' }, { status: 400 });
  const buf = Buffer.from(await f.arrayBuffer());
  const t = logoType(buf);
  if (!t) return Response.json({ error: 'JPG, PNG ya da WEBP yükleyin' }, { status: 400 });
  const key = await putObject(`tour/${u.id}/${crypto.randomBytes(6).toString('hex')}.${t.ext}`, buf, t.type);
  return Response.json({ key });
}
