package main import "net/http" type conditionalMiddlewareFunc func(r *http.Request) bool // conditionalMiddleware simply uses handler a if condition is true and handler // b if condition is false. func conditionalMiddleware(condition conditionalMiddlewareFunc, a, b http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if condition(r) { a.ServeHTTP(w, r) } else { b.ServeHTTP(w, r) } }) }