48 lines
1016 B
Go
48 lines
1016 B
Go
package middleware
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"io"
|
|
"one-api/common"
|
|
"one-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"].(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 := originalReq["image"]; image == "" {
|
|
c.Set("action", constant.TaskActionTextGenerate)
|
|
}
|
|
|
|
// We have to reset the request body for the next handlers
|
|
c.Set(common.KeyRequestBody, jsonData)
|
|
c.Next()
|
|
}
|
|
}
|