keel/net/http/middleware/skip.go
2021-09-06 22:13:07 +02:00

23 lines
427 B
Go

package middleware
import (
"net/http"
"go.uber.org/zap"
)
func Skip(mw Middleware, skippers ...Skipper) Middleware {
return func(l *zap.Logger, next http.Handler) http.Handler {
wrapped := mw(l, next)
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
for _, skipper := range skippers {
if skipper(r) {
next.ServeHTTP(w, r)
return
}
}
wrapped.ServeHTTP(w, r)
})
}
}