Ejemplo n.º 1
0
// 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")
	}

}
Ejemplo n.º 2
0
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)
	})
}
Ejemplo n.º 3
0
func setCurrentRoute(r *http.Request, val interface{}) {
	context.Set(r, routeKey, val)
}
Ejemplo n.º 4
0
func setVars(r *http.Request, val interface{}) {
	context.Set(r, varsKey, val)
}