github.com/sym3tri/etcd@v0.2.1-0.20140422215517-a563d82f95d6/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  
    25  	r.PathPrefix("/dashboard/static/").Handler(http.StripPrefix("/dashboard/static/", dashboard.HttpHandler()))
    26  	r.HandleFunc("/dashboard{path:.*}", dashboard.IndexPage)
    27  
    28  	r.PathPrefix("/v2/lock").Handler(http.StripPrefix("/v2/lock", lock2.NewHandler(addr)))
    29  	r.PathPrefix("/v2/leader").Handler(http.StripPrefix("/v2/leader", leader2.NewHandler(addr)))
    30  	return r
    31  }