Spaces:
Sleeping
Sleeping
| import { NextResponse, NextRequest } from "next/server" | |
| import { getValidNumber, serializeClap } from "@aitube/clap" | |
| import { throwIfInvalidToken } from "@/app/api/v1/auth/throwIfInvalidToken" | |
| import { create } from "." | |
| // a helper to generate Clap stories from a few sentences | |
| // this is mostly used by external apps such as the Stories Factory | |
| export async function POST(req: NextRequest) { | |
| await throwIfInvalidToken(req.headers.get("Authorization")) | |
| const request = await req.json() as { | |
| prompt: string | |
| width: number | |
| height: number | |
| turbo: boolean | |
| // can add more stuff for the V2 of Stories Factory | |
| } | |
| // console.log("[api/v1/create] request:", request) | |
| const clap = await create({ | |
| prompt: `${request?.prompt || ""}`.trim(), | |
| width: getValidNumber(request?.width, 256, 8192, 1024), | |
| height: getValidNumber(request?.height, 256, 8192, 576), | |
| turbo: request?.turbo ? true : false, | |
| }) | |
| // TODO replace by Clap file streaming | |
| return new NextResponse(await serializeClap(clap), { | |
| status: 200, | |
| headers: new Headers({ "content-type": "application/x-gzip" }), | |
| }) | |
| } | |