mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-03-30 08:34:11 +00:00
53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
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()
|
|
}
|
|
}
|