route.ts 989 B

12345678910111213141516171819202122232425262728293031323334
  1. import { NextResponse } from 'next/server';
  2. import { uploadMedia } from '@/actions/media';
  3. import { getAuthContextFromRequest } from '@/lib/auth/request-context';
  4. export async function POST(request: Request) {
  5. try {
  6. const auth = await getAuthContextFromRequest(request);
  7. if (!auth) {
  8. return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
  9. }
  10. const formData = await request.formData();
  11. const file = formData.get('file');
  12. if (!(file instanceof File)) {
  13. return NextResponse.json({ error: 'Missing file' }, { status: 400 });
  14. }
  15. const result = await uploadMedia(file, { ownerId: auth.userId });
  16. return NextResponse.json({
  17. media: {
  18. mediaId: result.media.id,
  19. filename: result.media.filename,
  20. status: result.media.status,
  21. },
  22. });
  23. } catch (error) {
  24. return NextResponse.json(
  25. { error: error instanceof Error ? error.message : 'Upload failed' },
  26. { status: 500 }
  27. );
  28. }
  29. }