Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import { NextResponse, NextRequest } from "next/server" | |
import queryString from "query-string" | |
import { parseSupportedExportFormat } from "@/app/api/parsers/parseSupportedExportFormat" | |
import { throwIfInvalidToken } from "@/app/api/v1/auth/throwIfInvalidToken" | |
import { parseTurbo } from "../../parsers/parseTurbo" | |
// we hide/wrap the micro-service under a unified AiTube API | |
export async function POST(req: NextRequest, res: NextResponse) { | |
await throwIfInvalidToken(req.headers.get("Authorization")) | |
const qs = queryString.parseUrl(req.url || "") | |
const query = (qs || {}).query | |
const format = parseSupportedExportFormat(query?.f) | |
const turbo = parseTurbo(query?.t) | |
// the AI Tube Clap Exporter doesn't support turbo mode | |
// this could be implemented by reducing the resolution, for instance | |
// or rather, the non-turbo mode could be the one where we upscale | |
// let's call our micro-service, which is currently open bar. | |
// console.log("[api/v1/export] sending blob to ai-tube-clap-exporter.hf.space") | |
const result = await fetch( | |
// `http://localhost:7860?f=${format}`, | |
`https://jbilcke-hf-ai-tube-clap-exporter.hf.space?f=${format}`, | |
{ method: "POST", body: await req.blob() } | |
) | |
const blob = await result.blob() | |
return new NextResponse(blob, { | |
status: 200, | |
headers: new Headers({ "content-type": `video/${format}` }), | |
}) | |
} |