github.com/kula/etcd@v0.2.1-0.20131226070625-e96234382ac0/mod/leader/v2/handler.go (about) 1 package v2 2 3 import ( 4 "net/http" 5 6 "github.com/gorilla/mux" 7 ) 8 9 // prefix is appended to the lock's prefix since the leader mod uses the lock mod. 10 const prefix = "/_mod/leader" 11 12 // handler manages the leader HTTP request. 13 type handler struct { 14 *mux.Router 15 client *http.Client 16 transport *http.Transport 17 addr string 18 } 19 20 // NewHandler creates an HTTP handler that can be registered on a router. 21 func NewHandler(addr string) (http.Handler) { 22 transport := &http.Transport{DisableKeepAlives: false} 23 h := &handler{ 24 Router: mux.NewRouter(), 25 client: &http.Client{Transport: transport}, 26 transport: transport, 27 addr: addr, 28 } 29 h.StrictSlash(false) 30 h.HandleFunc("/{key:.*}", h.getHandler).Methods("GET") 31 h.HandleFunc("/{key:.*}", h.setHandler).Methods("PUT") 32 h.HandleFunc("/{key:.*}", h.deleteHandler).Methods("DELETE") 33 return h 34 }