openreader/src/app/api/tts/segments/audio/fallback/route.ts

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 });
}
}