github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2013/go4python/deco.go (about) 1 // +build OMIT 2 3 package main 4 5 import ( 6 "fmt" 7 "net/http" 8 ) 9 10 func authRequired(f http.HandlerFunc) http.HandlerFunc { 11 return func(w http.ResponseWriter, r *http.Request) { 12 if r.FormValue("user") == "" { 13 http.Error(w, "unknown user", http.StatusForbidden) 14 return 15 } 16 f(w, r) 17 } 18 } 19 20 var hiHandler = authRequired( 21 func(w http.ResponseWriter, r *http.Request) { 22 fmt.Fprintf(w, "Hi, %v", r.FormValue("user")) 23 }, 24 ) 25 26 func main() { 27 http.HandleFunc("/hi", hiHandler) 28 http.ListenAndServe(":8080", nil) 29 }