diff --git a/main.go b/main.go index de675f8..1fe966e 100644 --- a/main.go +++ b/main.go @@ -45,12 +45,8 @@ func main() { } srv := &http.Server{ - Addr: fmt.Sprintf("%s:%d", "", 8080), - Handler: &router{ - assets: as, - templates: ts, - logger: log, - }, + Addr: fmt.Sprintf("%s:%d", "", 8080), + Handler: newRouter(as, ts, log), } c, stop := signal.NotifyContext(ctx, syscall.SIGINT, syscall.SIGTERM) diff --git a/router.go b/router.go index 80338dc..630753a 100644 --- a/router.go +++ b/router.go @@ -11,13 +11,7 @@ import ( "code.capytal.cc/loreddev/x/xtemplate" ) -type router struct { - assets http.Handler - templates xtemplate.Templater - logger *slog.Logger -} - -func (ctrl *router) ServeHTTP(w http.ResponseWriter, r *http.Request) { +func newRouter(assets http.Handler, templates xtemplate.Templater, logger *slog.Logger) http.Handler { mux := multiplexer.New() mux = multiplexer.WithPatternRules(mux, multiplexer.EnsureMethod(), @@ -25,19 +19,17 @@ func (ctrl *router) ServeHTTP(w http.ResponseWriter, r *http.Request) { multiplexer.EnsureTrailingSlash(), ) - router := smalltrip.NewRouter(smalltrip.WithMultiplexer(mux), smalltrip.WithLogger(ctrl.logger)) + router := smalltrip.NewRouter(smalltrip.WithMultiplexer(mux), smalltrip.WithLogger(logger)) router.Use(problem.Middleware(problem.DefaultHandler)) - router.Use(middleware.Logger(ctrl.logger)) + router.Use(middleware.Logger(logger)) - router.Handle("GET /assets/{file...}", ctrl.assets) - router.HandleFunc("GET /{$}", ctrl.landing) + router.Handle("GET /assets/{file...}", assets) + router.HandleFunc("GET /{$}", func(w http.ResponseWriter, r *http.Request) { + if err := templates.ExecuteTemplate(w, "landing", nil); err != nil { + problem.NewInternalServerError(err).ServeHTTP(w, r) + } + }) - router.ServeHTTP(w, r) -} - -func (ctrl *router) landing(w http.ResponseWriter, r *http.Request) { - if err := ctrl.templates.ExecuteTemplate(w, "landing", nil); err != nil { - problem.NewInternalServerError(err).ServeHTTP(w, r) - } + return router }