fix(server): wire real Lidarr clientFn for requests + quarantine services
Both lidarrrequests.Approve and lidarrquarantine.DeleteViaLidarr need a working client factory; the previous nil clientFn made them always return ErrLidarrDisabled even when /admin/integrations had a valid Lidarr config saved. Per-call factory re-reads config so admin saves take effect without restart, matching the Service contract.
This commit is contained in:
@@ -17,6 +17,7 @@ import (
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/auth"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/config"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/library"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/lidarr"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/lidarrconfig"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/lidarrquarantine"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/lidarrrequests"
|
||||
@@ -59,8 +60,19 @@ func (s *Server) Router() http.Handler {
|
||||
s.EventsCfg.SkipMaxDurationPlayedMs,
|
||||
)
|
||||
lidarrCfg := lidarrconfig.New(s.Pool)
|
||||
lidarrReqs := lidarrrequests.NewService(s.Pool, lidarrCfg, nil, nil)
|
||||
lidarrQuar := lidarrquarantine.NewService(s.Pool, lidarrCfg, nil)
|
||||
// Per-call client factory: re-reads config so an admin save in
|
||||
// /admin/integrations takes effect immediately without restart.
|
||||
// Returns nil when Lidarr is disabled, which the Service-layer
|
||||
// methods translate to ErrLidarrDisabled.
|
||||
lidarrClientFn := func() *lidarr.Client {
|
||||
cfg, err := lidarrCfg.Get(context.Background())
|
||||
if err != nil || !cfg.Enabled || cfg.BaseURL == "" || cfg.APIKey == "" {
|
||||
return nil
|
||||
}
|
||||
return lidarr.NewClient(cfg.BaseURL, cfg.APIKey)
|
||||
}
|
||||
lidarrReqs := lidarrrequests.NewService(s.Pool, lidarrCfg, lidarrClientFn, nil)
|
||||
lidarrQuar := lidarrquarantine.NewService(s.Pool, lidarrCfg, lidarrClientFn)
|
||||
api.Mount(r, s.Pool, s.Logger, writer, s.RecommendationCfg, lidarrCfg, lidarrReqs, lidarrQuar)
|
||||
r.Route("/api/admin", func(admin chi.Router) {
|
||||
admin.Use(auth.RequireUser(s.Pool))
|
||||
|
||||
Reference in New Issue
Block a user