123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package backend
- import (
- "fmt"
- "net/http"
- "github.com/allanpk716/ChineseSubFinder/pkg/tmdb_api"
- "github.com/allanpk716/ChineseSubFinder/pkg/settings"
- "github.com/allanpk716/ChineseSubFinder/internal/backend/controllers/base"
- v1 "github.com/allanpk716/ChineseSubFinder/internal/backend/controllers/v1"
- "github.com/allanpk716/ChineseSubFinder/internal/backend/middle"
- "github.com/allanpk716/ChineseSubFinder/pkg/logic/cron_helper"
- "github.com/gin-gonic/gin"
- )
- func InitRouter(
- router *gin.Engine,
- cronHelper *cron_helper.CronHelper,
- restartSignal chan interface{},
- ) (*base.ControllerBase, *v1.ControllerBase) {
- // ----------------------------------------------
- // 设置 TMDB API 的本地 Client,用户自己的 API Key
- var err error
- var tmdbApi *tmdb_api.TmdbApi
- if settings.Get().AdvancedSettings.TmdbApiSettings.Enable == true &&
- settings.Get().AdvancedSettings.TmdbApiSettings.ApiKey != "" {
- tmdbApi, err = tmdb_api.NewTmdbHelper(cronHelper.Logger, settings.Get().AdvancedSettings.TmdbApiSettings.ApiKey)
- if err != nil {
- cronHelper.Logger.Panicln("NewTmdbHelper", err)
- }
- if tmdbApi.Alive() == false {
- // 如果 tmdbApi 不可用,那么就不使用
- cronHelper.Logger.Errorln("tmdbApi.Alive() == false")
- tmdbApi = nil
- }
- }
- cronHelper.FileDownloader.MediaInfoDealers.SetTmdbHelperInstance(tmdbApi)
- // ----------------------------------------------
- cbBase := base.NewControllerBase(cronHelper.FileDownloader, restartSignal)
- cbV1 := v1.NewControllerBase(cronHelper, restartSignal)
- // --------------------------------------------------
- // 静态文件服务器
- // 添加电影的
- for i, path := range settings.Get().CommonSettings.MoviePaths {
- nowUrl := "/movie_dir_" + fmt.Sprintf("%d", i)
- cbV1.SetPathUrlMapItem(path, nowUrl)
- router.StaticFS(nowUrl, http.Dir(path))
- }
- // 添加连续剧的
- for i, path := range settings.Get().CommonSettings.SeriesPaths {
- nowUrl := "/series_dir_" + fmt.Sprintf("%d", i)
- cbV1.SetPathUrlMapItem(path, nowUrl)
- router.StaticFS(nowUrl, http.Dir(path))
- }
- // --------------------------------------------------
- // 基础的路由
- router.GET("/system-status", cbBase.SystemStatusHandler)
- router.POST("/setup", cbBase.SetupHandler)
- router.POST("/login", cbBase.LoginHandler)
- router.POST("/logout", middle.CheckAuth(), cbBase.LogoutHandler)
- router.POST("/change-pwd", middle.CheckAuth(), cbBase.ChangePwdHandler)
- router.POST("/check-path", cbBase.CheckPathHandler)
- router.POST("/check-emby-path", cbBase.CheckEmbyPathHandler)
- router.POST("/check-proxy", cbBase.CheckProxyHandler)
- router.POST("/check-cron", cbBase.CheckCronHandler)
- router.GET("/def-settings", cbBase.DefSettingsHandler)
- router.POST("/check-emby-settings", cbBase.CheckEmbySettingsHandler)
- router.POST("/check-tmdb-api-settings", cbBase.CheckTmdbApiHandler)
- // v1路由: /v1/xxx
- GroupV1 := router.Group("/" + cbV1.GetVersion())
- {
- GroupV1.Use(middle.CheckAuth())
- GroupV1.GET("/settings", cbV1.SettingsHandler)
- GroupV1.PUT("/settings", cbV1.SettingsHandler)
- GroupV1.POST("/daemon/start", cbV1.DaemonStartHandler)
- GroupV1.POST("/daemon/stop", cbV1.DaemonStopHandler)
- GroupV1.GET("/daemon/status", cbV1.DaemonStatusHandler)
- GroupV1.GET("/jobs/list", cbV1.JobsListHandler)
- GroupV1.POST("/jobs/change-job-status", cbV1.ChangeJobStatusHandler)
- GroupV1.POST("/jobs/log", cbV1.JobLogHandler)
- //GroupV1.POST("/video/list/refresh", cbV1.RefreshVideoListHandler)
- GroupV1.GET("/video/list/refresh-status", cbV1.RefreshVideoListStatusHandler)
- //GroupV1.GET("/video/list", cbV1.VideoListHandler)
- GroupV1.POST("/video/list/add", cbV1.VideoListAddHandler)
- GroupV1.POST("/video/list/refresh_main_list", cbV1.RefreshMainList)
- GroupV1.GET("/video/list/video_main_list", cbV1.VideoMainList)
- GroupV1.POST("/video/list/movie_poster", cbV1.MoviePoster)
- GroupV1.POST("/video/list/series_poster", cbV1.SeriesPoster)
- GroupV1.POST("/video/list/one_movie_subs", cbV1.OneMovieSubs)
- GroupV1.POST("/video/list/one_series_subs", cbV1.OneSeriesSubs)
- GroupV1.POST("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
- GroupV1.PUT("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
- GroupV1.POST("/subtitles/refresh_media_server_sub_list", cbV1.RefreshMediaServerSubList)
- GroupV1.POST("/subtitles/manual_upload_2_local", cbV1.ManualUploadSubtitle2Local)
- GroupV1.GET("/subtitles/list_manual_upload_2_local_job", cbV1.ListManualUploadSubtitle2LocalJob)
- GroupV1.POST("/subtitles/is_manual_upload_2_local_in_queue", cbV1.IsManualUploadSubtitle2LocalJobInQueue)
- GroupV1.POST("/preview/add", cbV1.PreviewAdd)
- GroupV1.GET("/preview/list", cbV1.PreviewList)
- GroupV1.POST("/preview/is_in_queue", cbV1.PreviewIsJobInQueue)
- GroupV1.POST("/preview/export_info", cbV1.PreviewGetExportInfo)
- GroupV1.POST("/preview/clean_up", cbV1.PreviewCleanUp)
- }
- GroupAPIV1 := router.Group("/api/v1")
- {
- GroupAPIV1.Use(middle.CheckApiAuth())
- GroupAPIV1.POST("/add-job", cbV1.AddJobHandler)
- GroupAPIV1.GET("/job-status", cbV1.GetJobStatusHandler)
- GroupAPIV1.POST("/change-job-status", cbV1.ChangeJobStatusHandler)
- GroupAPIV1.POST("/add-video-played-info", cbV1.AddVideoPlayedInfoHandler)
- GroupAPIV1.DELETE("/del-video-played-info", cbV1.DelVideoPlayedInfoHandler)
- }
- return cbBase, cbV1
- }
|