Redmage/server/routes/www/www.go

43 lines
1.1 KiB
Go

package www
import (
"context"
"net/http"
"os"
"github.com/go-chi/chi/v5"
chimiddleware "github.com/go-chi/chi/v5/middleware"
"github.com/tigorlazuardi/redmage/config"
"github.com/tigorlazuardi/redmage/db/queries/subreddits"
"github.com/tigorlazuardi/redmage/pkg/log"
"github.com/tigorlazuardi/redmage/server/routes/middleware"
)
var PublicFS = os.DirFS("public")
type WWW struct {
Subreddits *subreddits.Queries
Config *config.Config
}
func (www *WWW) Register(router chi.Router) {
router.Use(chimiddleware.RequestID)
router.Use(chimiddleware.RealIP)
router.
With(chimiddleware.RequestLogger(middleware.ChiSimpleLogger{})).
Mount("/public", http.StripPrefix("/public", http.FileServer(http.FS(PublicFS))))
if www.Config.Bool("http.hotreload") {
log.New(context.Background()).Debug("enabled hot reload")
router.
With(chimiddleware.RequestLogger(middleware.ChiSimpleLogger{})).
Get("/hot_reload", www.CreateHotReloadRoute())
}
router.Group(func(r chi.Router) {
r.Use(chimiddleware.RequestLogger(middleware.ChiLogger{}))
r.Use(chimiddleware.SetHeader("Content-Type", "text/html; utf-8"))
r.Get("/", www.Home)
})
}