File size: 1,456 Bytes
0d218b1
 
f24ad59
0d218b1
f24ad59
8919651
 
0d218b1
f24ad59
8919651
db70195
0d218b1
 
8919651
0d218b1
 
 
f24ad59
db70195
 
f24ad59
0d218b1
8919651
0d218b1
 
 
f24ad59
0d218b1
c1ce586
 
 
0d218b1
f24ad59
 
 
8919651
db70195
 
f24ad59
 
58b1ffb
0d218b1
f24ad59
0d218b1
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { NextResponse, NextRequest } from "next/server"
import queryString from "query-string"
import { newClap, parseClap, serializeClap } from "@aitube/clap"

import { parseCompletionMode } from "@/app/api/parsers/parseCompletionMode"
import { parseClapEntityPrompts } from "@/app/api/parsers/parseEntityPrompts"
import { throwIfInvalidToken } from "@/app/api/v1/auth/throwIfInvalidToken"

import { editEntities } from "."
import { ClapCompletionMode } from "@aitube/client"
import { parseTurbo } from "@/app/api/parsers/parseTurbo"

export async function POST(req: NextRequest) {
  await throwIfInvalidToken(req.headers.get("Authorization"))
  const qs = queryString.parseUrl(req.url || "")
  const query = (qs || {}).query

  const mode = parseCompletionMode(query?.c)
  const turbo = parseTurbo(query?.t)
  
  // const prompt = parsePrompt(query?.p)

  const entityPrompts = parseClapEntityPrompts(query?.e)

  const blob = await req.blob()

  const existingClap = await parseClap(blob)

  const newerClap = mode === ClapCompletionMode.FULL ? existingClap : newClap({
    meta: existingClap.meta
  })

  await editEntities({
    existingClap,
    newerClap,
    entityPrompts,
    mode,
    turbo,
  })
  
  // console.log(`[api/edit/entities] returning the newer clap extended with the entities`)

  return new NextResponse(await serializeClap(newerClap), {
    status: 200,
    headers: new Headers({ "content-type": "application/x-gzip" }),
  })
}