From f2389a6e6a54fbadb4b1807c7d7d06dfed3ab2c4 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Fri, 24 May 2024 13:59:03 +0200 Subject: [PATCH] Fixed nil logger pointer in rest endpoints Closes #153 --- server/rest/common.go | 15 +++++++++++++++ server/rest/container.go | 11 ++++------- server/rest/handlers.go | 2 +- server/rest/provider.go | 12 +++++------- server/server.go | 7 ++++++- 5 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 server/rest/common.go diff --git a/server/rest/common.go b/server/rest/common.go new file mode 100644 index 0000000..fcaf81b --- /dev/null +++ b/server/rest/common.go @@ -0,0 +1,15 @@ +package rest + +import ( + "database/sql" + "log/slog" + + "github.com/marcopeocchi/yt-dlp-web-ui/server/internal" +) + +type ContainerArgs struct { + DB *sql.DB + MDB *internal.MemoryDB + MQ *internal.MessageQueue + Logger *slog.Logger +} diff --git a/server/rest/container.go b/server/rest/container.go index 6395d71..047d611 100644 --- a/server/rest/container.go +++ b/server/rest/container.go @@ -1,24 +1,21 @@ package rest import ( - "database/sql" - "github.com/go-chi/chi/v5" "github.com/marcopeocchi/yt-dlp-web-ui/server/config" - "github.com/marcopeocchi/yt-dlp-web-ui/server/internal" middlewares "github.com/marcopeocchi/yt-dlp-web-ui/server/middleware" ) -func Container(db *sql.DB, mdb *internal.MemoryDB, mq *internal.MessageQueue) *Handler { +func Container(args *ContainerArgs) *Handler { var ( - service = ProvideService(db, mdb, mq) + service = ProvideService(args) handler = ProvideHandler(service) ) return handler } -func ApplyRouter(db *sql.DB, mdb *internal.MemoryDB, mq *internal.MessageQueue) func(chi.Router) { - h := Container(db, mdb, mq) +func ApplyRouter(args *ContainerArgs) func(chi.Router) { + h := Container(args) return func(r chi.Router) { if config.Instance().RequireAuth { diff --git a/server/rest/handlers.go b/server/rest/handlers.go index 213cc24..5474953 100644 --- a/server/rest/handlers.go +++ b/server/rest/handlers.go @@ -22,7 +22,7 @@ func (h *Handler) Exec() http.HandlerFunc { w.Header().Set("Content-Type", "application/json") - req := internal.DownloadRequest{} + var req internal.DownloadRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) diff --git a/server/rest/provider.go b/server/rest/provider.go index b6da94e..d4166d5 100644 --- a/server/rest/provider.go +++ b/server/rest/provider.go @@ -1,10 +1,7 @@ package rest import ( - "database/sql" "sync" - - "github.com/marcopeocchi/yt-dlp-web-ui/server/internal" ) var ( @@ -15,12 +12,13 @@ var ( handlerOnce sync.Once ) -func ProvideService(db *sql.DB, mdb *internal.MemoryDB, mq *internal.MessageQueue) *Service { +func ProvideService(args *ContainerArgs) *Service { serviceOnce.Do(func() { service = &Service{ - mdb: mdb, - db: db, - mq: mq, + mdb: args.MDB, + db: args.DB, + mq: args.MQ, + logger: args.Logger, } }) return service diff --git a/server/server.go b/server/server.go index 7904f86..23b0c20 100644 --- a/server/server.go +++ b/server/server.go @@ -178,7 +178,12 @@ func newServer(c serverConfig) *http.Server { r.Route("/rpc", ytdlpRPC.ApplyRouter()) // REST API handlers - r.Route("/api/v1", rest.ApplyRouter(c.db, c.mdb, c.mq)) + r.Route("/api/v1", rest.ApplyRouter(&rest.ContainerArgs{ + DB: c.db, + MDB: c.mdb, + MQ: c.mq, + Logger: c.logger, + })) // Logging r.Route("/log", logging.ApplyRouter())