| 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 |
| } |
|
|
| |
| 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 |
| } |
|
|
| |
| 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) |
| } |
|
|
| |
| c.Set(common.KeyRequestBody, jsonData) |
| c.Next() |
| } |
| } |
|
|