15
server/rest/common.go
Normal file
15
server/rest/common.go
Normal file
@@ -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
|
||||||
|
}
|
||||||
@@ -1,24 +1,21 @@
|
|||||||
package rest
|
package rest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
"github.com/go-chi/chi/v5"
|
||||||
"github.com/marcopeocchi/yt-dlp-web-ui/server/config"
|
"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"
|
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 (
|
var (
|
||||||
service = ProvideService(db, mdb, mq)
|
service = ProvideService(args)
|
||||||
handler = ProvideHandler(service)
|
handler = ProvideHandler(service)
|
||||||
)
|
)
|
||||||
return handler
|
return handler
|
||||||
}
|
}
|
||||||
|
|
||||||
func ApplyRouter(db *sql.DB, mdb *internal.MemoryDB, mq *internal.MessageQueue) func(chi.Router) {
|
func ApplyRouter(args *ContainerArgs) func(chi.Router) {
|
||||||
h := Container(db, mdb, mq)
|
h := Container(args)
|
||||||
|
|
||||||
return func(r chi.Router) {
|
return func(r chi.Router) {
|
||||||
if config.Instance().RequireAuth {
|
if config.Instance().RequireAuth {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func (h *Handler) Exec() http.HandlerFunc {
|
|||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
|
||||||
req := internal.DownloadRequest{}
|
var req internal.DownloadRequest
|
||||||
|
|
||||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package rest
|
package rest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/marcopeocchi/yt-dlp-web-ui/server/internal"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -15,12 +12,13 @@ var (
|
|||||||
handlerOnce sync.Once
|
handlerOnce sync.Once
|
||||||
)
|
)
|
||||||
|
|
||||||
func ProvideService(db *sql.DB, mdb *internal.MemoryDB, mq *internal.MessageQueue) *Service {
|
func ProvideService(args *ContainerArgs) *Service {
|
||||||
serviceOnce.Do(func() {
|
serviceOnce.Do(func() {
|
||||||
service = &Service{
|
service = &Service{
|
||||||
mdb: mdb,
|
mdb: args.MDB,
|
||||||
db: db,
|
db: args.DB,
|
||||||
mq: mq,
|
mq: args.MQ,
|
||||||
|
logger: args.Logger,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return service
|
return service
|
||||||
|
|||||||
@@ -178,7 +178,12 @@ func newServer(c serverConfig) *http.Server {
|
|||||||
r.Route("/rpc", ytdlpRPC.ApplyRouter())
|
r.Route("/rpc", ytdlpRPC.ApplyRouter())
|
||||||
|
|
||||||
// REST API handlers
|
// 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
|
// Logging
|
||||||
r.Route("/log", logging.ApplyRouter())
|
r.Route("/log", logging.ApplyRouter())
|
||||||
|
|||||||
Reference in New Issue
Block a user