aboutsummaryrefslogtreecommitdiff
path: root/src/vendor/github.com/alexedwards/stack/stack.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendor/github.com/alexedwards/stack/stack.go')
-rw-r--r--src/vendor/github.com/alexedwards/stack/stack.go94
1 files changed, 0 insertions, 94 deletions
diff --git a/src/vendor/github.com/alexedwards/stack/stack.go b/src/vendor/github.com/alexedwards/stack/stack.go
deleted file mode 100644
index 47c42b2..0000000
--- a/src/vendor/github.com/alexedwards/stack/stack.go
+++ /dev/null
@@ -1,94 +0,0 @@
-package stack
-
-import "net/http"
-
-type chainHandler func(*Context) http.Handler
-type chainMiddleware func(*Context, http.Handler) http.Handler
-
-type Chain struct {
- mws []chainMiddleware
- h chainHandler
-}
-
-func New(mws ...chainMiddleware) Chain {
- return Chain{mws: mws}
-}
-
-func (c Chain) Append(mws ...chainMiddleware) Chain {
- newMws := make([]chainMiddleware, len(c.mws)+len(mws))
- copy(newMws[:len(c.mws)], c.mws)
- copy(newMws[len(c.mws):], mws)
- c.mws = newMws
- return c
-}
-
-func (c Chain) Then(chf func(ctx *Context, w http.ResponseWriter, r *http.Request)) HandlerChain {
- c.h = adaptContextHandlerFunc(chf)
- return newHandlerChain(c)
-}
-
-func (c Chain) ThenHandler(h http.Handler) HandlerChain {
- c.h = adaptHandler(h)
- return newHandlerChain(c)
-}
-
-func (c Chain) ThenHandlerFunc(fn func(http.ResponseWriter, *http.Request)) HandlerChain {
- c.h = adaptHandlerFunc(fn)
- return newHandlerChain(c)
-}
-
-type HandlerChain struct {
- context *Context
- Chain
-}
-
-func newHandlerChain(c Chain) HandlerChain {
- return HandlerChain{context: NewContext(), Chain: c}
-}
-
-func (hc HandlerChain) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- // Always take a copy of context (i.e. pointing to a brand new memory location)
- ctx := hc.context.copy()
-
- final := hc.h(ctx)
- for i := len(hc.mws) - 1; i >= 0; i-- {
- final = hc.mws[i](ctx, final)
- }
- final.ServeHTTP(w, r)
-}
-
-func Inject(hc HandlerChain, key string, val interface{}) HandlerChain {
- hc.context = hc.context.copy().Put(key, val)
- return hc
-}
-
-// Adapt third party middleware with the signature
-// func(http.Handler) http.Handler into chainMiddleware
-func Adapt(fn func(http.Handler) http.Handler) chainMiddleware {
- return func(ctx *Context, h http.Handler) http.Handler {
- return fn(h)
- }
-}
-
-// Adapt http.Handler into a chainHandler
-func adaptHandler(h http.Handler) chainHandler {
- return func(ctx *Context) http.Handler {
- return h
- }
-}
-
-// Adapt a function with the signature
-// func(http.ResponseWriter, *http.Request) into a chainHandler
-func adaptHandlerFunc(fn func(w http.ResponseWriter, r *http.Request)) chainHandler {
- return adaptHandler(http.HandlerFunc(fn))
-}
-
-// Adapt a function with the signature
-// func(Context, http.ResponseWriter, *http.Request) into a chainHandler
-func adaptContextHandlerFunc(fn func(ctx *Context, w http.ResponseWriter, r *http.Request)) chainHandler {
- return func(ctx *Context) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- fn(ctx, w, r)
- })
- }
-}