mux/mux.go

29 lines
484 B
Go
Raw Normal View History

2024-08-31 02:05:36 +03:00
package mux
import "net/http"
type Mux struct {
http.ServeMux
middlewares []Middleware
groups map[string]*Mux
}
func New() *Mux {
return &Mux{
ServeMux: http.ServeMux{},
middlewares: []Middleware{},
groups: map[string]*Mux{},
}
}
func (m *Mux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
for path, g := range m.groups {
m.Handle(path, g)
}
h := http.Handler(&m.ServeMux)
for _, mw := range m.middlewares {
h = mw(h)
}
h.ServeHTTP(w, r)
}