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  }