| import { NextResponse, NextRequest } from "next/server"; |
| import { sunoApi } from "@/lib/SunoApi"; |
| import { corsHeaders } from "@/lib/utils"; |
|
|
| export const dynamic = "force-dynamic"; |
|
|
| export async function POST(req: NextRequest) { |
| if (req.method === 'POST') { |
| try { |
| const body = await req.json(); |
| const { clip_id } = body; |
| if (!clip_id) { |
| return new NextResponse(JSON.stringify({ error: 'Clip id is required' }), { |
| status: 400, |
| headers: { |
| 'Content-Type': 'application/json', |
| ...corsHeaders |
| } |
| }); |
| } |
| const audioInfo = await (await sunoApi).concatenate(clip_id); |
| return new NextResponse(JSON.stringify(audioInfo), { |
| status: 200, |
| headers: { |
| 'Content-Type': 'application/json', |
| ...corsHeaders |
| } |
| }); |
| } catch (error: any) { |
| console.error('Error generating concatenating audio:', error.response.data); |
| if (error.response.status === 402) { |
| return new NextResponse(JSON.stringify({ error: error.response.data.detail }), { |
| status: 402, |
| headers: { |
| 'Content-Type': 'application/json', |
| ...corsHeaders |
| } |
| }); |
| } |
| return new NextResponse(JSON.stringify({ error: 'Internal server error' }), { |
| status: 500, |
| headers: { |
| 'Content-Type': 'application/json', |
| ...corsHeaders |
| } |
| }); |
| } |
| } else { |
| return new NextResponse('Method Not Allowed', { |
| headers: { |
| Allow: 'POST', |
| ...corsHeaders |
| }, |
| status: 405 |
| }); |
| } |
| } |
|
|
| export async function OPTIONS(request: Request) { |
| return new Response(null, { |
| status: 200, |
| headers: corsHeaders |
| }); |
| } |
|
|