video-router.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package router
  2. import (
  3. "github.com/QuantumNous/new-api/controller"
  4. "github.com/QuantumNous/new-api/middleware"
  5. "github.com/gin-gonic/gin"
  6. )
  7. func SetVideoRouter(router *gin.Engine) {
  8. // Video proxy: accepts either session auth (dashboard) or token auth (API clients)
  9. videoProxyRouter := router.Group("/v1")
  10. videoProxyRouter.Use(middleware.RouteTag("relay"))
  11. videoProxyRouter.Use(middleware.TokenOrUserAuth())
  12. {
  13. videoProxyRouter.GET("/videos/:task_id/content", controller.VideoProxy)
  14. }
  15. videoV1Router := router.Group("/v1")
  16. videoV1Router.Use(middleware.RouteTag("relay"))
  17. videoV1Router.Use(middleware.TokenAuth(), middleware.Distribute())
  18. {
  19. videoV1Router.POST("/video/generations", controller.RelayTask)
  20. videoV1Router.GET("/video/generations/:task_id", controller.RelayTaskFetch)
  21. videoV1Router.POST("/videos/:video_id/remix", controller.RelayTask)
  22. }
  23. // openai compatible API video routes
  24. // docs: https://platform.openai.com/docs/api-reference/videos/create
  25. {
  26. videoV1Router.POST("/videos", controller.RelayTask)
  27. videoV1Router.GET("/videos/:task_id", controller.RelayTaskFetch)
  28. }
  29. klingV1Router := router.Group("/kling/v1")
  30. klingV1Router.Use(middleware.RouteTag("relay"))
  31. klingV1Router.Use(middleware.KlingRequestConvert(), middleware.TokenAuth(), middleware.Distribute())
  32. {
  33. klingV1Router.POST("/videos/text2video", controller.RelayTask)
  34. klingV1Router.POST("/videos/image2video", controller.RelayTask)
  35. klingV1Router.GET("/videos/text2video/:task_id", controller.RelayTaskFetch)
  36. klingV1Router.GET("/videos/image2video/:task_id", controller.RelayTaskFetch)
  37. }
  38. // Jimeng official API routes - direct mapping to official API format
  39. jimengOfficialGroup := router.Group("jimeng")
  40. jimengOfficialGroup.Use(middleware.RouteTag("relay"))
  41. jimengOfficialGroup.Use(middleware.JimengRequestConvert(), middleware.TokenAuth(), middleware.Distribute())
  42. {
  43. // Maps to: /?Action=CVSync2AsyncSubmitTask&Version=2022-08-31 and /?Action=CVSync2AsyncGetResult&Version=2022-08-31
  44. jimengOfficialGroup.POST("/", controller.RelayTask)
  45. }
  46. }