tts-test / frontend /src /api /client.ts
aaxaxax's picture
feat: add full project source for HF Spaces deployment
10ea63e
Raw
History Blame Contribute Delete
957 Bytes
import type { GenerateRequest, HealthResponse } from '../types'
export async function generateAudio(
req: GenerateRequest,
signal: AbortSignal,
): Promise<Blob> {
const res = await fetch('/api/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(req),
signal,
})
if (!res.ok) {
const ct = res.headers.get('content-type') ?? ''
if (ct.includes('json')) {
const body = await res.json() as { detail: string | Array<{ msg: string }> }
const detail = Array.isArray(body.detail)
? body.detail.map(e => e.msg).join('; ')
: body.detail
throw new Error(detail)
}
throw new Error(await res.text())
}
return res.blob()
}
export async function fetchHealth(): Promise<HealthResponse> {
const res = await fetch('/health')
if (!res.ok) throw new Error(`Health check returned ${res.status}`)
return res.json() as Promise<HealthResponse>
}