Provide access to response writer in Context

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day 2015-04-15 19:18:40 -07:00
parent 030006a6d7
commit cc8285f74c

View File

@ -16,6 +16,7 @@ import (
// Common errors used with this package. // Common errors used with this package.
var ( var (
ErrNoRequestContext = errors.New("no http request in context") ErrNoRequestContext = errors.New("no http request in context")
ErrNoResponseWriterContext = errors.New("no http response in context")
) )
func parseIP(ipStr string) net.IP { func parseIP(ipStr string) net.IP {
@ -110,6 +111,20 @@ func WithResponseWriter(ctx Context, w http.ResponseWriter) (Context, http.Respo
return irw, irw return irw, irw
} }
// GetResponseWriter returns the http.ResponseWriter from the provided
// context. If not present, ErrNoResponseWriterContext is returned. The
// returned instance provides instrumentation in the context.
func GetResponseWriter(ctx Context) (http.ResponseWriter, error) {
v := ctx.Value("http.response")
rw, ok := v.(http.ResponseWriter)
if !ok || rw == nil {
return nil, ErrNoResponseWriterContext
}
return rw, nil
}
// getVarsFromRequest let's us change request vars implementation for testing // getVarsFromRequest let's us change request vars implementation for testing
// and maybe future changes. // and maybe future changes.
var getVarsFromRequest = mux.Vars var getVarsFromRequest = mux.Vars