base_router.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package backend
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/allanpk716/ChineseSubFinder/pkg/settings"
  6. "github.com/sirupsen/logrus"
  7. "github.com/allanpk716/ChineseSubFinder/internal/backend/controllers/base"
  8. v1 "github.com/allanpk716/ChineseSubFinder/internal/backend/controllers/v1"
  9. "github.com/allanpk716/ChineseSubFinder/internal/backend/middle"
  10. "github.com/allanpk716/ChineseSubFinder/pkg/logic/cron_helper"
  11. "github.com/gin-gonic/gin"
  12. )
  13. func InitRouter(
  14. log *logrus.Logger,
  15. settings *settings.Settings, // 设置实例
  16. router *gin.Engine,
  17. cronHelper *cron_helper.CronHelper,
  18. restartSignal chan interface{},
  19. ) (*base.ControllerBase, *v1.ControllerBase) {
  20. cbBase := base.NewControllerBase(log, restartSignal)
  21. cbV1 := v1.NewControllerBase(log, cronHelper, restartSignal)
  22. // --------------------------------------------------
  23. // 静态文件服务器
  24. // 添加电影的
  25. for i, path := range settings.CommonSettings.MoviePaths {
  26. nowUrl := "/movie_dir_" + fmt.Sprintf("%d", i)
  27. cbV1.SetPathUrlMapItem(path, nowUrl)
  28. router.StaticFS(nowUrl, http.Dir(path))
  29. }
  30. // 添加连续剧的
  31. for i, path := range settings.CommonSettings.SeriesPaths {
  32. nowUrl := "/series_dir_" + fmt.Sprintf("%d", i)
  33. cbV1.SetPathUrlMapItem(path, nowUrl)
  34. router.StaticFS(nowUrl, http.Dir(path))
  35. }
  36. // --------------------------------------------------
  37. // 基础的路由
  38. router.GET("/system-status", cbBase.SystemStatusHandler)
  39. router.POST("/setup", cbBase.SetupHandler)
  40. router.POST("/login", cbBase.LoginHandler)
  41. router.POST("/logout", middle.CheckAuth(), cbBase.LogoutHandler)
  42. router.POST("/change-pwd", middle.CheckAuth(), cbBase.ChangePwdHandler)
  43. router.POST("/check-path", cbBase.CheckPathHandler)
  44. router.POST("/check-emby-path", cbBase.CheckEmbyPathHandler)
  45. router.POST("/check-proxy", cbBase.CheckProxyHandler)
  46. router.POST("/check-cron", cbBase.CheckCronHandler)
  47. router.GET("/def-settings", cbBase.DefSettingsHandler)
  48. router.POST("/check-emby-settings", cbBase.CheckEmbySettingsHandler)
  49. // v1路由: /v1/xxx
  50. GroupV1 := router.Group("/" + cbV1.GetVersion())
  51. {
  52. GroupV1.Use(middle.CheckAuth())
  53. GroupV1.GET("/settings", cbV1.SettingsHandler)
  54. GroupV1.PUT("/settings", cbV1.SettingsHandler)
  55. GroupV1.POST("/daemon/start", cbV1.DaemonStartHandler)
  56. GroupV1.POST("/daemon/stop", cbV1.DaemonStopHandler)
  57. GroupV1.GET("/daemon/status", cbV1.DaemonStatusHandler)
  58. GroupV1.GET("/jobs/list", cbV1.JobsListHandler)
  59. GroupV1.POST("/jobs/change-job-status", cbV1.ChangeJobStatusHandler)
  60. GroupV1.POST("/jobs/log", cbV1.JobLogHandler)
  61. //GroupV1.POST("/video/list/refresh", cbV1.RefreshVideoListHandler)
  62. GroupV1.GET("/video/list/refresh-status", cbV1.RefreshVideoListStatusHandler)
  63. //GroupV1.GET("/video/list", cbV1.VideoListHandler)
  64. GroupV1.POST("/video/list/add", cbV1.VideoListAddHandler)
  65. GroupV1.POST("/video/list/refresh_main_list", cbV1.RefreshMainList)
  66. GroupV1.GET("/video/list/video_main_list", cbV1.VideoMainList)
  67. GroupV1.POST("/video/list/movie_poster", cbV1.MoviePoster)
  68. GroupV1.POST("/video/list/series_poster", cbV1.SeriesPoster)
  69. GroupV1.POST("/video/list/one_movie_subs", cbV1.OneMovieSubs)
  70. GroupV1.POST("/video/list/one_series_subs", cbV1.OneSeriesSubs)
  71. GroupV1.POST("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
  72. GroupV1.PUT("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
  73. GroupV1.POST("/subtitles/refresh_media_server_sub_list", cbV1.RefreshMediaServerSubList)
  74. }
  75. GroupAPIV1 := router.Group("/api/v1")
  76. {
  77. GroupAPIV1.Use(middle.CheckApiAuth())
  78. GroupAPIV1.POST("/add-job", cbV1.AddJobHandler)
  79. GroupAPIV1.GET("/job-status", cbV1.GetJobStatusHandler)
  80. GroupAPIV1.POST("/change-job-status", cbV1.ChangeJobStatusHandler)
  81. GroupAPIV1.POST("/add-video-played-info", cbV1.AddVideoPlayedInfoHandler)
  82. GroupAPIV1.DELETE("/del-video-played-info", cbV1.DelVideoPlayedInfoHandler)
  83. }
  84. return cbBase, cbV1
  85. }