tmdb_api.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package base
  2. import (
  3. "net/http"
  4. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/local_http_proxy_server"
  5. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/settings"
  6. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/tmdb_api"
  7. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/types/backend"
  8. "github.com/gin-gonic/gin"
  9. )
  10. func (cb *ControllerBase) CheckTmdbApiHandler(c *gin.Context) {
  11. var err error
  12. defer func() {
  13. // 统一的异常处理
  14. cb.ErrorProcess(c, "CheckTmdbApiHandler", err)
  15. }()
  16. req := tmdb_api.Req{}
  17. err = c.ShouldBindJSON(&req)
  18. if err != nil {
  19. return
  20. }
  21. if req.ApiKey == "" {
  22. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "false"})
  23. return
  24. }
  25. // 备份一份
  26. bkProxySettings := settings.Get().AdvancedSettings.ProxySettings.CopyOne()
  27. // 赋值 Web 传递过来的需要测试的代理参数
  28. settings.Get().AdvancedSettings.ProxySettings = &req.ProxySettings
  29. defer func() {
  30. // 还原
  31. settings.Get().AdvancedSettings.ProxySettings = bkProxySettings
  32. err = local_http_proxy_server.SetProxyInfo(settings.Get().AdvancedSettings.ProxySettings.GetInfos())
  33. if err != nil {
  34. return
  35. }
  36. // 启动代理
  37. local_http_proxy_server.GetProxyUrl()
  38. }()
  39. // 设置代理
  40. err = local_http_proxy_server.SetProxyInfo(settings.Get().AdvancedSettings.ProxySettings.GetInfos())
  41. if err != nil {
  42. return
  43. }
  44. // 开始测试 tmdb api
  45. tmdbApi, err := tmdb_api.NewTmdbHelper(
  46. cb.fileDownloader.Log,
  47. req.ApiKey,
  48. req.UseAlternateBaseURL)
  49. if err != nil {
  50. cb.fileDownloader.Log.Errorln("NewTmdbHelper", err)
  51. return
  52. }
  53. aliveStatus := tmdbApi.Alive()
  54. // 返回结果
  55. if aliveStatus == false {
  56. cb.fileDownloader.Log.Errorln("tmdbApi.Alive() == false")
  57. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "false"})
  58. return
  59. } else {
  60. cb.fileDownloader.Log.Infoln("tmdbApi.Alive() == true")
  61. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "true"})
  62. return
  63. }
  64. }