// Tests that the context is cleared or not cleared properly depending on // the configuration of the router func TestKeepContext(t *testing.T) { func1 := func(w http.ResponseWriter, r *http.Request) {} r := NewRouter() r.HandleFunc("/", func1).Name("func1") req, _ := http.NewRequest("GET", "http://localhost/", nil) context.Set(req, "t", 1) res := new(http.ResponseWriter) r.ServeHTTP(*res, req) if _, ok := context.GetOk(req, "t"); ok { t.Error("Context should have been cleared at end of request") } r.KeepContext = true req, _ = http.NewRequest("GET", "http://localhost/", nil) context.Set(req, "t", 1) r.ServeHTTP(*res, req) if _, ok := context.GetOk(req, "t"); !ok { t.Error("Context should NOT have been cleared at end of request") } }
func HandlerMux(s *http.ServeMux, rules *rules) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { m := NewMobileDetect(r, rules) if m.IsTablet() { context.Set(r, "Device", "Tablet") } else if m.IsMobile() { context.Set(r, "Device", "Mobile") } else { context.Set(r, "Device", "Desktop") } s.ServeHTTP(w, r) }) }
func setCurrentRoute(r *http.Request, val interface{}) { context.Set(r, routeKey, val) }
func setVars(r *http.Request, val interface{}) { context.Set(r, varsKey, val) }