Files
inventory-plus-plus/internal/server/router/mux.go
T
2026-01-11 17:05:20 -07:00

37 lines
633 B
Go

package router
import (
"net/http"
"ruben/inventory2/internal/server/response"
)
type (
Mux struct {
Mux *http.ServeMux
middleware []response.Middleware
}
)
func NewMux(ms ...response.Middleware) *Mux {
return &Mux{
Mux: http.NewServeMux(),
middleware: ms,
}
}
func (m *Mux) Handle(pattern string, fn response.HandlerFunc) {
for _, mw := range m.middleware {
prev := fn
fn = mw(func(r *http.Request) (response.Response, error) {
return prev(r)
})
}
m.Mux.Handle(pattern, response.Handler(fn))
}
func (m *Mux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
m.Mux.ServeHTTP(w, r)
}