浏览代码

新增一个独立的 Emby 配置 Check API fix #457

Signed-off-by: allan716 <[email protected]>
allan716 3 年之前
父节点
当前提交
c920da1cac

+ 2 - 0
internal/backend/base_router.go

@@ -62,6 +62,8 @@ func InitRouter(
 
 
 	router.GET("/def-settings", cbBase.DefSettingsHandler)
 	router.GET("/def-settings", cbBase.DefSettingsHandler)
 
 
+	router.POST("/check-emby-settings", cbBase.CheckEmbySettingsHandler)
+
 	// v1路由: /v1/xxx
 	// v1路由: /v1/xxx
 	GroupV1 := router.Group("/" + cbV1.GetVersion())
 	GroupV1 := router.Group("/" + cbV1.GetVersion())
 	{
 	{

+ 45 - 0
internal/backend/controllers/base/check_emby_settings.go

@@ -0,0 +1,45 @@
+package base
+
+import (
+	"github.com/allanpk716/ChineseSubFinder/pkg/logic/emby_helper"
+	"github.com/allanpk716/ChineseSubFinder/pkg/settings"
+	backend2 "github.com/allanpk716/ChineseSubFinder/pkg/types/backend"
+	"github.com/gin-gonic/gin"
+	"net/http"
+)
+
+func (cb ControllerBase) CheckEmbySettingsHandler(c *gin.Context) {
+	var err error
+	defer func() {
+		// 统一的异常处理
+		cb.ErrorProcess(c, "CheckEmbySettingsHandler", err)
+	}()
+
+	checkEmbyApi := backend2.ReqCheckEmbyAPI{}
+	err = c.ShouldBindJSON(&checkEmbyApi)
+	if err != nil {
+		return
+	}
+
+	emSettings := settings.EmbySettings{
+		Enable:                true,
+		AddressUrl:            checkEmbyApi.AddressUrl,
+		APIKey:                checkEmbyApi.APIKey,
+		MaxRequestVideoNumber: 2000,
+		SkipWatched:           false,
+		MoviePathsMapping:     make(map[string]string, 0),
+		SeriesPathsMapping:    make(map[string]string, 0),
+	}
+
+	emHelper := emby_helper.NewEmbyHelper(cb.fileDownloader.Log, &settings.Settings{EmbySettings: &emSettings})
+	userList, err := emHelper.EmbyApi.GetUserIdList()
+	if err != nil {
+		c.JSON(http.StatusOK, backend2.ReplyCommon{Message: err.Error()})
+		return
+	}
+	if len(userList.Items) <= 0 {
+		c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "your emby api key can't get info from emby server"})
+	} else {
+		c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
+	}
+}

+ 5 - 0
pkg/types/backend/req_check_emby_path.go

@@ -7,3 +7,8 @@ type ReqCheckEmbyPath struct {
 	CFSMediaPath  string `json:"cfs_media_path" binding:"required"`
 	CFSMediaPath  string `json:"cfs_media_path" binding:"required"`
 	EmbyMediaPath string `json:"emby_media_path" binding:"required"`
 	EmbyMediaPath string `json:"emby_media_path" binding:"required"`
 }
 }
+
+type ReqCheckEmbyAPI struct {
+	AddressUrl string `json:"address_url" binding:"required"`
+	APIKey     string `json:"api_key" binding:"required"`
+}