123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package v2
- import (
- "net/http"
- "path"
- etcdErr "github.com/coreos/etcd/error"
- "github.com/coreos/etcd/third_party/github.com/gorilla/mux"
- )
- // getIndexHandler retrieves the current lock index.
- // The "field" parameter specifies to read either the lock "index" or lock "value".
- func (h *handler) getIndexHandler(w http.ResponseWriter, req *http.Request) error {
- h.client.SyncCluster()
- vars := mux.Vars(req)
- keypath := path.Join(prefix, vars["key"])
- field := req.FormValue("field")
- if len(field) == 0 {
- field = "value"
- }
- // Read all indices.
- resp, err := h.client.Get(keypath, true, true)
- if err != nil {
- return err
- }
- nodes := lockNodes{resp.Node.Nodes}
- // Write out the requested field.
- if node := nodes.First(); node != nil {
- switch field {
- case "index":
- w.Write([]byte(path.Base(node.Key)))
- case "value":
- w.Write([]byte(node.Value))
- default:
- return etcdErr.NewError(etcdErr.EcodeInvalidField, "Get", 0)
- }
- }
- return nil
- }
|