github.com/ghodss/etcd@v0.3.1-0.20140417172404-cc329bfa55cb/mod/leader/v2/delete_handler.go (about) 1 package v2 2 3 import ( 4 "fmt" 5 "io" 6 "net/http" 7 "net/url" 8 9 etcdErr "github.com/coreos/etcd/error" 10 "github.com/coreos/etcd/third_party/github.com/gorilla/mux" 11 ) 12 13 // deleteHandler remove a given leader. 14 func (h *handler) deleteHandler(w http.ResponseWriter, req *http.Request) error { 15 vars := mux.Vars(req) 16 name := req.FormValue("name") 17 if name == "" { 18 return etcdErr.NewError(etcdErr.EcodeNameRequired, "Delete", 0) 19 } 20 21 // Proxy the request to the the lock service. 22 u, err := url.Parse(fmt.Sprintf("%s/mod/v2/lock/%s", h.addr, vars["key"])) 23 if err != nil { 24 return err 25 } 26 q := u.Query() 27 q.Set("value", name) 28 u.RawQuery = q.Encode() 29 30 r, err := http.NewRequest("DELETE", u.String(), nil) 31 if err != nil { 32 return err 33 } 34 35 // Read from the leader lock. 36 resp, err := h.client.Do(r) 37 if err != nil { 38 return err 39 } 40 defer resp.Body.Close() 41 w.WriteHeader(resp.StatusCode) 42 io.Copy(w, resp.Body) 43 44 return nil 45 }