|
- package handlers
-
- import (
- "net/http"
- )
-
- // This interface can be implemented by an augmented ResponseWriter, so that
- // it doesn't hide other augmented writers in the chain.
- type WrapWriter interface {
- http.ResponseWriter
- WrappedWriter() http.ResponseWriter
- }
-
- // Helper function to retrieve a specific ResponseWriter.
- func GetResponseWriter(w http.ResponseWriter,
- predicate func(http.ResponseWriter) bool) (http.ResponseWriter, bool) {
-
- for {
- // Check if this writer is the one we're looking for
- if w != nil && predicate(w) {
- return w, true
- }
- // If it is a WrapWriter, move back the chain of wrapped writers
- ww, ok := w.(WrapWriter)
- if !ok {
- return nil, false
- }
- w = ww.WrappedWriter()
- }
- }
|