package webui import ( "net/http" "strings" ) type Handler struct { mux *http.ServeMux } // ServeHTTP implements http.Handler. func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { h.mux.ServeHTTP(w, r) } func NewHandler(funcs ...OptionFunc) *Handler { opts := NewOptions(funcs...) h := &Handler{ mux: http.NewServeMux(), } for mountpoint, handler := range opts.Mounts { h.mount(mountpoint, handler) } return h } func (h *Handler) mount(prefix string, handler http.Handler) { trimmed := strings.TrimSuffix(prefix, "/") if len(trimmed) > 0 { h.mux.Handle(prefix, http.StripPrefix(trimmed, handler)) } else { h.mux.Handle(prefix, handler) } } var _ http.Handler = &Handler{}