Files
yadunut.dev/site/router.go

34 lines
974 B
Go

package site
import "net/http"
func middlewares(h *handler, next http.Handler) http.Handler {
return h.LoggingMiddleware(h.RequestsCounterMiddleware(next))
}
func createRoutes(h *handler) map[string]http.Handler {
routes := map[string]http.Handler{
"/static/": middlewares(h, http.HandlerFunc(h.FileServer)),
"/": middlewares(h, http.HandlerFunc(h.Index)),
"/ping": middlewares(h, http.HandlerFunc(h.Ping)),
"/metrics": middlewares(h, http.HandlerFunc(h.Metrics)),
"/healthz": middlewares(h, http.HandlerFunc(h.Healthz)),
}
return routes
}
func newRouter(handler *handler) http.Handler {
mux := http.NewServeMux()
for pattern, handler := range createRoutes(handler) {
mux.Handle(pattern, handler)
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if h, pattern := mux.Handler(r); pattern != "" {
h.ServeHTTP(w, r)
} else {
middlewares(handler, http.HandlerFunc(handler.NotFound)).ServeHTTP(w, r)
}
})
}