You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

61 lines
2.3 KiB

  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.TokenOrUserAuth())
  11. {
  12. videoProxyRouter.GET("/videos/:task_id/content", controller.VideoProxy)
  13. }
  14. videoV1Router := router.Group("/v1")
  15. videoV1Router.Use(middleware.TokenAuth(), middleware.Distribute())
  16. {
  17. videoV1Router.POST("/video/generations", controller.RelayTask)
  18. videoV1Router.GET("/video/generations/:task_id", controller.RelayTaskFetch)
  19. videoV1Router.POST("/videos/:video_id/remix", controller.RelayTask)
  20. }
  21. // openai compatible API video routes
  22. // docs: https://platform.openai.com/docs/api-reference/videos/create
  23. {
  24. videoV1Router.POST("/videos", controller.RelayTask)
  25. videoV1Router.GET("/videos/:task_id", controller.RelayTaskFetch)
  26. }
  27. aipingNativeRouter := router.Group("/api/v3/contents/generations")
  28. aipingNativeRouter.Use(middleware.TokenAuth(), middleware.Distribute())
  29. {
  30. aipingNativeRouter.POST("/tasks", controller.AipingNativeVideoSubmit)
  31. }
  32. // Fetch 不需要 Distribute(无请求体分发逻辑)
  33. aipingNativeFetchRouter := router.Group("/api/v3/contents/generations")
  34. aipingNativeFetchRouter.Use(middleware.TokenAuth())
  35. {
  36. aipingNativeFetchRouter.GET("/tasks/:task_id", controller.AipingNativeVideoFetch)
  37. }
  38. klingV1Router := router.Group("/kling/v1")
  39. klingV1Router.Use(middleware.KlingRequestConvert(), middleware.TokenAuth(), middleware.Distribute())
  40. {
  41. klingV1Router.POST("/videos/text2video", controller.RelayTask)
  42. klingV1Router.POST("/videos/image2video", controller.RelayTask)
  43. klingV1Router.GET("/videos/text2video/:task_id", controller.RelayTaskFetch)
  44. klingV1Router.GET("/videos/image2video/:task_id", controller.RelayTaskFetch)
  45. }
  46. // Jimeng official API routes - direct mapping to official API format
  47. jimengOfficialGroup := router.Group("jimeng")
  48. jimengOfficialGroup.Use(middleware.JimengRequestConvert(), middleware.TokenAuth(), middleware.Distribute())
  49. {
  50. // Maps to: /?Action=CVSync2AsyncSubmitTask&Version=2022-08-31 and /?Action=CVSync2AsyncGetResult&Version=2022-08-31
  51. jimengOfficialGroup.POST("/", controller.RelayTask)
  52. }
  53. }