diff options
Diffstat (limited to 'vendor/github.com/go-zoo/bone/helper_15.go')
-rw-r--r-- | vendor/github.com/go-zoo/bone/helper_15.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/github.com/go-zoo/bone/helper_15.go b/vendor/github.com/go-zoo/bone/helper_15.go new file mode 100644 index 000000000..068ce18e0 --- /dev/null +++ b/vendor/github.com/go-zoo/bone/helper_15.go @@ -0,0 +1,45 @@ +// +build !go1.7 + +/******************************** +*** Multiplexer for Go *** +*** Bone is under MIT license *** +*** Code by CodingFerret *** +*** github.com/go-zoo *** +*********************************/ + +package bone + +import ( + "net/http" + "sync" +) + +var globalVars = struct { + sync.RWMutex + v map[*http.Request]map[string]string +}{v: make(map[*http.Request]map[string]string)} + +// GetAllValues return the req PARAMs +func GetAllValues(req *http.Request) map[string]string { + globalVars.RLock() + values := globalVars.v[req] + globalVars.RUnlock() + return values +} + +// serveMatchedRequest is an extension point for Route which allows us to conditionally compile for +// go1.7 and <go1.7 +func (r *Route) serveMatchedRequest(rw http.ResponseWriter, req *http.Request, vars map[string]string) { + globalVars.Lock() + globalVars.v[req] = vars + globalVars.Unlock() + + // Regardless if ServeHTTP panics (and potentially recovers) we can make sure to not leak + // memory in globalVars for this request + defer func() { + globalVars.Lock() + delete(globalVars.v, req) + globalVars.Unlock() + }() + r.Handler.ServeHTTP(rw, req) +} |