controller_base.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package v1
  2. import (
  3. "github.com/allanpk716/ChineseSubFinder/pkg/types/backend"
  4. "net/http"
  5. "github.com/allanpk716/ChineseSubFinder/internal/backend/controllers/base"
  6. "github.com/allanpk716/ChineseSubFinder/pkg/lock"
  7. "github.com/allanpk716/ChineseSubFinder/pkg/logic/cron_helper"
  8. "github.com/allanpk716/ChineseSubFinder/pkg/sub_formatter"
  9. "github.com/allanpk716/ChineseSubFinder/pkg/video_scan_and_refresh_helper"
  10. "github.com/gin-gonic/gin"
  11. "github.com/sirupsen/logrus"
  12. )
  13. type ControllerBase struct {
  14. log *logrus.Logger
  15. cronHelper *cron_helper.CronHelper
  16. StaticFileSystemBackEnd *base.StaticFileSystemBackEnd
  17. videoScanAndRefreshHelper *video_scan_and_refresh_helper.VideoScanAndRefreshHelper
  18. videoScanAndRefreshHelperIsRunning bool
  19. videoScanAndRefreshHelperLocker lock.Lock
  20. videoScanAndRefreshHelperErrMessage string
  21. }
  22. func NewControllerBase(log *logrus.Logger, cronHelper *cron_helper.CronHelper) *ControllerBase {
  23. cb := &ControllerBase{
  24. log: log,
  25. cronHelper: cronHelper,
  26. StaticFileSystemBackEnd: base.NewStaticFileSystemBackEnd(log),
  27. // 这里因为不进行任务的添加,仅仅是扫描,所以 downloadQueue 可以为 nil
  28. videoScanAndRefreshHelper: video_scan_and_refresh_helper.NewVideoScanAndRefreshHelper(
  29. sub_formatter.GetSubFormatter(log, cronHelper.Settings.AdvancedSettings.SubNameFormatter),
  30. cronHelper.FileDownloader, nil),
  31. videoScanAndRefreshHelperLocker: lock.NewLock(),
  32. }
  33. return cb
  34. }
  35. func (cb *ControllerBase) Close() {
  36. cb.cronHelper.Stop()
  37. cb.videoScanAndRefreshHelper.Cancel()
  38. cb.videoScanAndRefreshHelperLocker.Close()
  39. }
  40. func (cb ControllerBase) GetVersion() string {
  41. return "v1"
  42. }
  43. func (cb *ControllerBase) ErrorProcess(c *gin.Context, funcName string, err error) {
  44. if err != nil {
  45. cb.log.Errorln(funcName, err.Error())
  46. c.JSON(http.StatusInternalServerError, backend.ReplyCommon{Message: err.Error()})
  47. }
  48. }