ytdl-web/web/serve.go

51 lines
1.2 KiB
Go
Raw Permalink Normal View History

2023-04-14 11:58:32 -04:00
package web
import (
"fmt"
2023-04-14 16:07:57 -04:00
"github.com/dgraph-io/badger/v2"
2023-04-14 11:58:32 -04:00
"github.com/gofiber/fiber/v2"
2023-05-23 18:49:58 -04:00
slogfiber "github.com/samber/slog-fiber"
2023-05-23 18:44:05 -04:00
"go.fifitido.net/ytdl-web/config"
"go.fifitido.net/ytdl-web/utils"
"go.fifitido.net/ytdl-web/ytdl"
"go.fifitido.net/ytdl-web/ytdl/cache"
2023-05-23 18:44:05 -04:00
"golang.org/x/exp/slog"
2023-04-14 11:58:32 -04:00
)
2023-05-23 18:44:05 -04:00
func Serve(cfg *config.Config) error {
2023-04-14 11:58:32 -04:00
engine := ViewsEngine()
2023-05-23 18:44:05 -04:00
app := fiber.New(fiber.Config{
Views: engine,
EnableTrustedProxyCheck: true,
TrustedProxies: cfg.HTTP.TrustedProxies,
DisableStartupMessage: true,
})
2023-04-14 11:58:32 -04:00
2023-05-23 18:49:58 -04:00
logger := slog.With("module", "web")
app.Use(slogfiber.New(logger))
db, err := badger.Open(
badger.
DefaultOptions(cfg.Cache.DirPath).
WithLogger(utils.NewBadgerLogger(slog.With("module", "badger"))),
)
if err != nil {
return err
}
defer db.Close()
cache := cache.NewDefaultMetadataCache(db)
routes := &routes{
ytdl: ytdl.NewYtdl(cfg, slog.Default(), cache),
}
routes.Register(app)
2023-04-14 11:58:32 -04:00
2023-05-23 18:44:05 -04:00
listenAddr := fmt.Sprintf("%s:%d", cfg.HTTP.Listen, cfg.HTTP.Port)
2023-05-23 18:49:58 -04:00
logger.Info("Starting HTTP server", slog.String("host", cfg.HTTP.Listen), slog.Int("port", cfg.HTTP.Port))
return app.Listen(listenAddr)
2023-04-14 11:58:32 -04:00
}