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  }