31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { isS3Configured } from '@/lib/server/storage/s3';
|
|
import {
|
|
buildSegmentAudioCacheHeaders,
|
|
resolveCompletedSegmentAudio,
|
|
streamAudioBuffer,
|
|
ttsSegmentsS3NotConfiguredResponse,
|
|
} from '@/lib/server/tts/segments-audio';
|
|
import { getTtsSegmentAudioObject } from '@/lib/server/tts/segments-blobstore';
|
|
|
|
export const dynamic = 'force-dynamic';
|
|
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
if (!isS3Configured()) return ttsSegmentsS3NotConfiguredResponse();
|
|
|
|
const resolved = await resolveCompletedSegmentAudio(request);
|
|
if (resolved instanceof Response) return resolved;
|
|
|
|
const audio = await getTtsSegmentAudioObject(resolved.audioKey);
|
|
return new NextResponse(streamAudioBuffer(audio), {
|
|
headers: {
|
|
'Content-Type': 'audio/mpeg',
|
|
...buildSegmentAudioCacheHeaders('fallback'),
|
|
},
|
|
});
|
|
} catch (error) {
|
|
console.error('Error serving TTS segment audio fallback:', error);
|
|
return NextResponse.json({ error: 'Failed to load segment audio' }, { status: 500 });
|
|
}
|
|
}
|