|
- package router
-
- import (
- "github.com/QuantumNous/new-api/controller"
- "github.com/QuantumNous/new-api/middleware"
-
- "github.com/gin-gonic/gin"
- )
-
- func SetVideoRouter(router *gin.Engine) {
- // Video proxy: accepts either session auth (dashboard) or token auth (API clients)
- videoProxyRouter := router.Group("/v1")
- videoProxyRouter.Use(middleware.TokenOrUserAuth())
- {
- videoProxyRouter.GET("/videos/:task_id/content", controller.VideoProxy)
- }
-
- videoV1Router := router.Group("/v1")
- videoV1Router.Use(middleware.TokenAuth(), middleware.Distribute())
- {
- videoV1Router.POST("/video/generations", controller.RelayTask)
- videoV1Router.GET("/video/generations/:task_id", controller.RelayTaskFetch)
- videoV1Router.POST("/videos/:video_id/remix", controller.RelayTask)
- }
- klingAipingRouter := router.Group("/v1")
- klingAipingRouter.Use(middleware.TokenAuth())
- {
- klingAipingRouter.POST("/videos/text2video", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/videos/text2video/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/videos/text2video", controller.KlingAipingNativeTaskList)
- klingAipingRouter.POST("/videos/image2video", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/videos/image2video/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/videos/image2video", controller.KlingAipingNativeTaskList)
- klingAipingRouter.POST("/videos/motion-control", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/videos/motion-control/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/videos/motion-control", controller.KlingAipingNativeTaskList)
- klingAipingRouter.POST("/videos/omni-video", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/videos/omni-video/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/videos/omni-video", controller.KlingAipingNativeTaskList)
- klingAipingRouter.POST("/videos/multi-image2video", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/videos/multi-image2video/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/videos/multi-image2video", controller.KlingAipingNativeTaskList)
- klingAipingRouter.POST("/videos/video-extend", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/videos/video-extend/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/videos/video-extend", controller.KlingAipingNativeTaskList)
-
- klingAipingRouter.POST("/general/advanced-custom-elements", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/general/advanced-custom-elements/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/general/advanced-custom-elements", controller.KlingAipingNativeProxy)
- klingAipingRouter.GET("/general/advanced-presets-elements", controller.KlingAipingNativeProxy)
- klingAipingRouter.POST("/general/delete-advanced-elements", controller.KlingAipingNativeProxy)
- klingAipingRouter.POST("/general/custom-voices", controller.KlingAipingNativeTaskSubmit)
- klingAipingRouter.GET("/general/custom-voices/:task_id", controller.KlingAipingNativeTaskFetch)
- klingAipingRouter.GET("/general/custom-voices", controller.KlingAipingNativeProxy)
- klingAipingRouter.GET("/general/presets-voices", controller.KlingAipingNativeProxy)
- klingAipingRouter.POST("/general/delete-voices", controller.KlingAipingNativeProxy)
- }
-
- // openai compatible API video routes
- // docs: https://platform.openai.com/docs/api-reference/videos/create
- {
- videoV1Router.POST("/videos", controller.RelayTask)
- videoV1Router.GET("/videos/:task_id", controller.RelayTaskFetch)
- }
-
- aipingNativeRouter := router.Group("/api/v3/contents/generations")
- aipingNativeRouter.Use(middleware.TokenAuth(), middleware.Distribute())
- {
- aipingNativeRouter.POST("/tasks", controller.AipingNativeVideoSubmit)
- }
- // Fetch 不需要 Distribute(无请求体分发逻辑)
- aipingNativeFetchRouter := router.Group("/api/v3/contents/generations")
- aipingNativeFetchRouter.Use(middleware.TokenAuth())
- {
- aipingNativeFetchRouter.GET("/tasks/:task_id", controller.AipingNativeVideoFetch)
- }
-
- klingV1Router := router.Group("/kling/v1")
- klingV1Router.Use(middleware.KlingRequestConvert(), middleware.TokenAuth(), middleware.Distribute())
- {
- klingV1Router.POST("/videos/text2video", controller.RelayTask)
- klingV1Router.POST("/videos/image2video", controller.RelayTask)
- klingV1Router.GET("/videos/text2video/:task_id", controller.RelayTaskFetch)
- klingV1Router.GET("/videos/image2video/:task_id", controller.RelayTaskFetch)
- }
-
- // Jimeng official API routes - direct mapping to official API format
- jimengOfficialGroup := router.Group("jimeng")
- jimengOfficialGroup.Use(middleware.JimengRequestConvert(), middleware.TokenAuth(), middleware.Distribute())
- {
- // Maps to: /?Action=CVSync2AsyncSubmitTask&Version=2022-08-31 and /?Action=CVSync2AsyncGetResult&Version=2022-08-31
- jimengOfficialGroup.POST("/", controller.RelayTask)
- }
- }
|