tmdb_api.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. if err != nil {
  49. cb.fileDownloader.Log.Errorln("NewTmdbHelper", err)
  50. return
  51. }
  52. aliveStatus := tmdbApi.Alive()
  53. // 返回结果
  54. if aliveStatus == false {
  55. cb.fileDownloader.Log.Errorln("tmdbApi.Alive() == false")
  56. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "false"})
  57. return
  58. } else {
  59. cb.fileDownloader.Log.Infoln("tmdbApi.Alive() == true")
  60. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "true"})
  61. return
  62. }
  63. }