34 lines
974 B
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)
|
|
}
|
|
})
|
|
}
|