package middleware import ( "net/http" "github.com/zenazn/goji/web" ) // EnvInit is a middleware that allocates an environment map if one does not // already exist. This is necessary because Goji does not guarantee that Env is // present when running middleware (it avoids forcing the map allocation). Note // that other middleware should check Env for nil in order to maximize // compatibility (when EnvInit is not used, or when another middleware layer // blanks out Env), but for situations in which the user controls the middleware // stack and knows EnvInit is present, this middleware can eliminate a lot of // boilerplate. func EnvInit(c *web.C, h http.Handler) http.Handler { fn := func(w http.ResponseWriter, r *http.Request) { if c.Env == nil { c.Env = make(map[string]interface{}) } h.ServeHTTP(w, r) } return http.HandlerFunc(fn) }