github.com/macb/etcd@v0.3.1-0.20140227003422-a60481c6b1a0/mod/mod.go (about)

     1  // mod is the entry point to all of the etcd modules.
     2  package mod
     3  
     4  import (
     5  	"net/http"
     6  	"path"
     7  
     8  	"github.com/coreos/etcd/mod/dashboard"
     9  	leader2 "github.com/coreos/etcd/mod/leader/v2"
    10  	lock2 "github.com/coreos/etcd/mod/lock/v2"
    11  	"github.com/coreos/etcd/third_party/github.com/gorilla/mux"
    12  )
    13  
    14  var ServeMux *http.Handler
    15  
    16  func addSlash(w http.ResponseWriter, req *http.Request) {
    17  	http.Redirect(w, req, path.Join("mod", req.URL.Path)+"/", 302)
    18  	return
    19  }
    20  
    21  func HttpHandler(addr string) http.Handler {
    22  	r := mux.NewRouter()
    23  	r.HandleFunc("/dashboard", addSlash)
    24  	r.PathPrefix("/dashboard/").Handler(http.StripPrefix("/dashboard/", dashboard.HttpHandler()))
    25  
    26  	r.PathPrefix("/v2/lock").Handler(http.StripPrefix("/v2/lock", lock2.NewHandler(addr)))
    27  	r.PathPrefix("/v2/leader").Handler(http.StripPrefix("/v2/leader", leader2.NewHandler(addr)))
    28  	return r
    29  }