Files
yadunut.dev/site/router.go
2024-11-19 16:37:31 -05:00

33 lines
900 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{
"/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)
http.Error(w, "Boo", http.StatusNotFound)
}
})
}