mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdhttp: parseRequest -> parseKeyRequest
This commit is contained in:
@@ -108,13 +108,12 @@ func (h serverHandler) serveKeys(w http.ResponseWriter, r *http.Request) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), h.timeout)
|
||||
defer cancel()
|
||||
|
||||
rr, err := parseRequest(r, etcdserver.GenID(), clockwork.NewRealClock())
|
||||
rr, err := parseKeyRequest(r, etcdserver.GenID(), clockwork.NewRealClock())
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
rr.Path = path.Join(etcdserver.StoreKeysPrefix, rr.Path)
|
||||
resp, err := h.server.Do(ctx, rr)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
@@ -251,10 +250,10 @@ func (h serverHandler) serveRaft(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// parseRequest converts a received http.Request to a server Request,
|
||||
// performing validation of supplied fields as appropriate.
|
||||
// parseKeyRequest converts a received http.Request on keysPrefix to
|
||||
// a server Request, performing validation of supplied fields as appropriate.
|
||||
// If any validation fails, an empty Request and non-nil error is returned.
|
||||
func parseRequest(r *http.Request, id uint64, clock clockwork.Clock) (etcdserverpb.Request, error) {
|
||||
func parseKeyRequest(r *http.Request, id uint64, clock clockwork.Clock) (etcdserverpb.Request, error) {
|
||||
emptyReq := etcdserverpb.Request{}
|
||||
|
||||
err := r.ParseForm()
|
||||
@@ -271,7 +270,7 @@ func parseRequest(r *http.Request, id uint64, clock clockwork.Clock) (etcdserver
|
||||
"incorrect key prefix",
|
||||
)
|
||||
}
|
||||
p := r.URL.Path[len(keysPrefix):]
|
||||
p := path.Join(etcdserver.StoreKeysPrefix, r.URL.Path[len(keysPrefix):])
|
||||
|
||||
var pIdx, wIdx uint64
|
||||
if pIdx, err = getUint64(r.Form, "prevIndex"); err != nil {
|
||||
|
||||
@@ -211,7 +211,7 @@ func TestBadParseRequest(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for i, tt := range tests {
|
||||
got, err := parseRequest(tt.in, 1234, clockwork.NewFakeClock())
|
||||
got, err := parseKeyRequest(tt.in, 1234, clockwork.NewFakeClock())
|
||||
if err == nil {
|
||||
t.Errorf("#%d: unexpected nil error!", i)
|
||||
continue
|
||||
@@ -244,7 +244,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
etcdserverpb.Request{
|
||||
ID: 1234,
|
||||
Method: "GET",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -258,7 +258,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
Val: "some_value",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -272,7 +272,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
PrevIndex: 98765,
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -286,7 +286,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
Recursive: true,
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -300,7 +300,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
Sorted: true,
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -310,7 +310,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "GET",
|
||||
Wait: true,
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -319,7 +319,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
etcdserverpb.Request{
|
||||
ID: 1234,
|
||||
Method: "GET",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
Expiration: 0,
|
||||
},
|
||||
},
|
||||
@@ -329,7 +329,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
etcdserverpb.Request{
|
||||
ID: 1234,
|
||||
Method: "GET",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
Expiration: fc.Now().Add(5678 * time.Second).UnixNano(),
|
||||
},
|
||||
},
|
||||
@@ -339,7 +339,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
etcdserverpb.Request{
|
||||
ID: 1234,
|
||||
Method: "GET",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
Expiration: fc.Now().UnixNano(),
|
||||
},
|
||||
},
|
||||
@@ -350,7 +350,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "GET",
|
||||
Dir: true,
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -360,7 +360,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "GET",
|
||||
Dir: false,
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -374,7 +374,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
PrevExist: boolp(true),
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -388,7 +388,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
PrevExist: boolp(false),
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
// mix various fields
|
||||
@@ -408,7 +408,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
PrevExist: boolp(true),
|
||||
PrevValue: "previous value",
|
||||
Val: "some value",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
// query parameters should be used if given
|
||||
@@ -422,7 +422,7 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
PrevValue: "woof",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
// but form values should take precedence over query parameters
|
||||
@@ -438,13 +438,13 @@ func TestGoodParseRequest(t *testing.T) {
|
||||
ID: 1234,
|
||||
Method: "PUT",
|
||||
PrevValue: "miaow",
|
||||
Path: "/foo",
|
||||
Path: path.Join(etcdserver.StoreKeysPrefix, "/foo"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for i, tt := range tests {
|
||||
got, err := parseRequest(tt.in, 1234, fc)
|
||||
got, err := parseKeyRequest(tt.in, 1234, fc)
|
||||
if err != nil {
|
||||
t.Errorf("#%d: err = %v, want %v", i, err, nil)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user