|
|
import { NextRequest, NextResponse } from 'next/server'; |
|
|
import { uploadToTelegram } from '@/lib/telegram'; |
|
|
import { saveImage, generateId } from '@/lib/db'; |
|
|
|
|
|
export async function POST(req: NextRequest) { |
|
|
try { |
|
|
const formData = await req.formData(); |
|
|
const file = formData.get('file') as Blob; |
|
|
const customId = formData.get('customId') as string; |
|
|
|
|
|
if (!file) { |
|
|
return NextResponse.json({ error: 'No file provided' }, { status: 400 }); |
|
|
} |
|
|
|
|
|
|
|
|
const telegramResult = await uploadToTelegram(file, 'upload.jpg'); |
|
|
|
|
|
|
|
|
const id = customId ? customId.toLowerCase().replace(/[^a-z0-9-]/g, '-') : generateId(); |
|
|
|
|
|
|
|
|
await saveImage({ |
|
|
id, |
|
|
telegram_file_id: telegramResult.file_id, |
|
|
created_at: Date.now(), |
|
|
metadata: { |
|
|
size: file.size, |
|
|
type: file.type |
|
|
} |
|
|
}); |
|
|
|
|
|
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || |
|
|
(req.headers.get('host') ? `http://${req.headers.get('host')}` : ''); |
|
|
|
|
|
return NextResponse.json({ |
|
|
id, |
|
|
url: `${baseUrl}/i/${id}` |
|
|
}); |
|
|
|
|
|
} catch (error: any) { |
|
|
console.error('Upload error:', error); |
|
|
return NextResponse.json({ error: error.message || 'Internal server error' }, { status: 500 }); |
|
|
} |
|
|
} |
|
|
|