summaryrefslogtreecommitdiff
path: root/vendor/github.com/go-zoo/bone/helper_15.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-zoo/bone/helper_15.go')
-rw-r--r--vendor/github.com/go-zoo/bone/helper_15.go45
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)
+}