| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package middleware
- import (
- "bytes"
- "encoding/json"
- "io"
- "github.com/QuantumNous/new-api/common"
- "github.com/QuantumNous/new-api/constant"
- "github.com/gin-gonic/gin"
- )
- func KlingRequestConvert() func(c *gin.Context) {
- return func(c *gin.Context) {
- var originalReq map[string]interface{}
- if err := common.UnmarshalBodyReusable(c, &originalReq); err != nil {
- c.Next()
- return
- }
- // Support both model_name and model fields
- model, _ := originalReq["model_name"].(string)
- if model == "" {
- model, _ = originalReq["model"].(string)
- }
- prompt, _ := originalReq["prompt"].(string)
- unifiedReq := map[string]interface{}{
- "model": model,
- "prompt": prompt,
- "metadata": originalReq,
- }
- jsonData, err := json.Marshal(unifiedReq)
- if err != nil {
- c.Next()
- return
- }
- // Rewrite request body and path
- c.Request.Body = io.NopCloser(bytes.NewBuffer(jsonData))
- c.Request.URL.Path = "/v1/video/generations"
- if image, ok := originalReq["image"]; !ok || image == "" {
- c.Set("action", constant.TaskActionTextGenerate)
- }
- // We have to reset the request body for the next handlers
- c.Set(common.KeyRequestBody, jsonData)
- c.Next()
- }
- }
|