func FilteredFunc(stack *mango.Stack, streamer http.HandlerFunc, filter BodyFilter) http.HandlerFunc { compiled_app := stack.Compile(streamerapp(streamer)) return func(w http.ResponseWriter, r *http.Request) { env := make(map[string]interface{}) env["mango.request"] = &mango.Request{r} env["mango.bodyfilter"] = filter env["mango.writer"] = w status, headers, body := compiled_app(env) _, streaming := env["streamango.streaming"] // streaming, so don't need to do if streaming { return } for key, values := range headers { for _, value := range values { w.Header().Add(key, value) } } w.WriteHeader(int(status)) w.Write([]byte(body)) } }