added ThenFunc
diff --git a/chain.go b/chain.go index d675546..dac1f54 100644 --- a/chain.go +++ b/chain.go
@@ -60,6 +60,28 @@ return final } +// Then chains the middleware and returns the final http.Handler. +// New(m1, m2, m3).ThenFunc(h) +// is equivalent to: +// m1(m2(m3(http.HandlerFunc(h)))) +// When the request comes in, it will be passed to m1, then m2, then m3 +// and finally, the given handler +// (assuming every middleware calls the following one). +// +// A chain can be safely reused by calling ThenFunc() several times. +// stdStack := alice.New(ratelimitHandler, csrfHandler) +// indexPipe = stdStack.ThenFunc(indexHandlerFunc) +// authPipe = stdStack.ThenFunc(authHandlerFunc) +// Note that constructors are called on every call to Then() +// and thus several instances of the same middleware will be created +// when a chain is reused in this way. +// For proper middleware, this should cause no problems. +// +// ThenFunc() treats nil as http.DefaultServeMux. +func (c Chain) ThenFunc(fn http.HandlerFunc) http.Handler { + return c.Then(http.HandlerFunc(fn)) +} + // Append extends a chain, adding the specified constructors // as the last ones in the request flow. //