From bc32060b1d23d2959d7045920d984cf969468eac Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Thu, 22 Jan 2015 16:42:46 -0800 Subject: [PATCH] client: support PrevIndex in SetOptions & DeleteOptions --- client/keys.go | 8 ++++++++ client/keys_test.go | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/client/keys.go b/client/keys.go index 758b1c9fe..d858bbc41 100644 --- a/client/keys.go +++ b/client/keys.go @@ -76,11 +76,13 @@ type KeysAPI interface { type SetOptions struct { PrevValue string + PrevIndex uint64 PrevExist PrevExistType } type DeleteOptions struct { PrevValue string + PrevIndex uint64 Recursive bool } @@ -287,6 +289,9 @@ func (a *setAction) HTTPRequest(ep url.URL) *http.Request { if a.Options.PrevValue != "" { params.Set("prevValue", a.Options.PrevValue) } + if a.Options.PrevIndex != 0 { + params.Set("prevIndex", strconv.FormatUint(a.Options.PrevIndex, 10)) + } if a.Options.PrevExist != PrevIgnore { params.Set("prevExist", string(a.Options.PrevExist)) } @@ -316,6 +321,9 @@ func (a *deleteAction) HTTPRequest(ep url.URL) *http.Request { if a.Options.PrevValue != "" { params.Set("prevValue", a.Options.PrevValue) } + if a.Options.PrevIndex != 0 { + params.Set("prevIndex", strconv.FormatUint(a.Options.PrevIndex, 10)) + } if a.Options.Recursive { params.Set("recursive", "true") } diff --git a/client/keys_test.go b/client/keys_test.go index 034566b6b..726186cef 100644 --- a/client/keys_test.go +++ b/client/keys_test.go @@ -301,6 +301,18 @@ func TestSetAction(t *testing.T) { wantURL: "http://example.com/foo?prevValue=bar+baz", wantBody: "value=", }, + + // PrevIndex is set + { + act: setAction{ + Key: "foo", + Options: SetOptions{ + PrevIndex: uint64(12), + }, + }, + wantURL: "http://example.com/foo?prevIndex=12", + wantBody: "value=", + }, } for i, tt := range tests { @@ -398,6 +410,17 @@ func TestDeleteAction(t *testing.T) { }, wantURL: "http://example.com/foo?prevValue=bar+baz", }, + + // PrevIndex is set + { + act: deleteAction{ + Key: "foo", + Options: DeleteOptions{ + PrevIndex: uint64(12), + }, + }, + wantURL: "http://example.com/foo?prevIndex=12", + }, } for i, tt := range tests {