2024-04-07 23:41:00 +07:00
|
|
|
package www
|
|
|
|
|
|
|
|
import (
|
2024-04-08 21:50:52 +07:00
|
|
|
"context"
|
|
|
|
"net/http"
|
|
|
|
"os"
|
|
|
|
|
2024-04-07 23:41:00 +07:00
|
|
|
"github.com/go-chi/chi/v5"
|
2024-04-08 21:50:52 +07:00
|
|
|
chimiddleware "github.com/go-chi/chi/v5/middleware"
|
|
|
|
"github.com/tigorlazuardi/redmage/config"
|
2024-04-07 23:41:00 +07:00
|
|
|
"github.com/tigorlazuardi/redmage/db/queries/subreddits"
|
2024-04-08 21:50:52 +07:00
|
|
|
"github.com/tigorlazuardi/redmage/pkg/log"
|
|
|
|
"github.com/tigorlazuardi/redmage/server/routes/middleware"
|
2024-04-07 23:41:00 +07:00
|
|
|
)
|
|
|
|
|
2024-04-08 21:50:52 +07:00
|
|
|
var PublicFS = os.DirFS("public")
|
|
|
|
|
2024-04-07 23:41:00 +07:00
|
|
|
type WWW struct {
|
|
|
|
Subreddits *subreddits.Queries
|
2024-04-08 21:50:52 +07:00
|
|
|
Config *config.Config
|
2024-04-07 23:41:00 +07:00
|
|
|
}
|
|
|
|
|
2024-04-08 16:59:42 +07:00
|
|
|
func (www *WWW) Register(router chi.Router) {
|
2024-04-08 21:50:52 +07:00
|
|
|
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{}))
|
2024-04-08 23:18:09 +07:00
|
|
|
r.Use(chimiddleware.SetHeader("Content-Type", "text/html; utf-8"))
|
2024-04-08 21:50:52 +07:00
|
|
|
r.Get("/", www.Home)
|
|
|
|
})
|
2024-04-08 16:59:42 +07:00
|
|
|
}
|