diff --git a/client_handlers.go b/client_handlers.go index 6418307ea..4b630f085 100644 --- a/client_handlers.go +++ b/client_handlers.go @@ -37,23 +37,20 @@ func SetHttpHandler(w *http.ResponseWriter, req *http.Request) { debug("[recv] POST http://%v/v1/keys/%s", raftServer.Name(), key) - command := &SetCommand{} - command.Key = key + value := req.FormValue("value") - command.Value = req.FormValue("value") - - if len(command.Value) == 0 { + if len(value) == 0 { (*w).WriteHeader(http.StatusBadRequest) (*w).Write(newJsonError(200, "Set")) return } + prevValue := req.FormValue("prevValue") + strDuration := req.FormValue("ttl") - var err error - - command.ExpireTime, err = durationToExpireTime(strDuration) + expireTime, err := durationToExpireTime(strDuration) if err != nil { @@ -62,51 +59,22 @@ func SetHttpHandler(w *http.ResponseWriter, req *http.Request) { (*w).Write(newJsonError(202, "Set")) } - dispatch(command, w, req, true) + if len(prevValue) != 0 { + command := &TestAndSetCommand{} + command.Key = key + command.Value = value + command.PrevValue = prevValue + command.ExpireTime = expireTime + dispatch(command, w, req, true) -} - -// TestAndSet handler -func TestAndSetHttpHandler(w http.ResponseWriter, req *http.Request) { - key := req.URL.Path[len("/v1/testAndSet/"):] - - debug("[recv] POST http://%v/v1/testAndSet/%s", raftServer.Name(), key) - - command := &TestAndSetCommand{} - command.Key = key - - command.PrevValue = req.FormValue("prevValue") - command.Value = req.FormValue("value") - - if len(command.Value) == 0 { - w.WriteHeader(http.StatusBadRequest) - - w.Write(newJsonError(200, "TestAndSet")) - - return + } else { + command := &SetCommand{} + command.Key = key + command.Value = value + command.ExpireTime = expireTime + dispatch(command, w, req, true) } - if len(command.PrevValue) == 0 { - w.WriteHeader(http.StatusBadRequest) - - w.Write(newJsonError(201, "TestAndSet")) - return - } - - strDuration := req.FormValue("ttl") - - var err error - - command.ExpireTime, err = durationToExpireTime(strDuration) - - if err != nil { - w.WriteHeader(http.StatusBadRequest) - - w.Write(newJsonError(202, "TestAndSet")) - } - - dispatch(command, &w, req, true) - } // Delete Handler diff --git a/etcd.go b/etcd.go index 3e3ae4a51..6d0c97973 100644 --- a/etcd.go +++ b/etcd.go @@ -372,7 +372,6 @@ func startClientTransport(port int, st int) { // external commands http.HandleFunc("/"+version+"/keys/", Multiplexer) http.HandleFunc("/"+version+"/watch/", WatchHttpHandler) - http.HandleFunc("/"+version+"/testAndSet/", TestAndSetHttpHandler) http.HandleFunc("/leader", LeaderHttpHandler) http.HandleFunc("/machines", MachinesHttpHandler)