From 98b50b01d160fcf2ed8b8ecaddc43aa18499aa8e Mon Sep 17 00:00:00 2001 From: Mason Fish Date: Thu, 12 Mar 2020 13:28:40 -0700 Subject: [PATCH] unescape space path name (#415) * unescape space path name Signed-off-by: Mason Fish * adjust router config instead Signed-off-by: Mason Fish Co-authored-by: Mason Fish --- zqd/handlers_test.go | 17 +++++++++++++++++ zqd/server.go | 1 - 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/zqd/handlers_test.go b/zqd/handlers_test.go index 15f1e797cf..2b9272845a 100644 --- a/zqd/handlers_test.go +++ b/zqd/handlers_test.go @@ -8,6 +8,7 @@ import ( "io/ioutil" "net/http" "net/http/httptest" + "net/url" "os" "path/filepath" "strings" @@ -182,6 +183,22 @@ func TestSpaceDelete(t *testing.T) { }) } +func TestURLEncodingSupport(t *testing.T) { + c := newCore(t) + defer os.RemoveAll(c.Root) + + rawSpace := "raw %<>space.brim" + encodedSpaceURL := fmt.Sprintf("http://localhost:9867/space/%s", url.PathEscape(rawSpace)) + + createSpace(t, c, rawSpace, "") + + res := httpRequest(t, zqd.NewHandler(c), "GET", encodedSpaceURL, nil) + require.Equal(t, http.StatusOK, res.StatusCode) + + res = httpRequest(t, zqd.NewHandler(c), "DELETE", encodedSpaceURL, nil) + require.Equal(t, http.StatusNoContent, res.StatusCode) +} + func TestNoEndSlashSupport(t *testing.T) { c := newCore(t) defer os.RemoveAll(c.Root) diff --git a/zqd/server.go b/zqd/server.go index aad13a1b04..5344c5c1a9 100644 --- a/zqd/server.go +++ b/zqd/server.go @@ -35,7 +35,6 @@ var Version VersionMessage func NewHandler(root *Core) http.Handler { r := mux.NewRouter() - r = r.UseEncodedPath() r.Handle("/space", wrapRoot(root, handleSpaceList)).Methods("GET") r.Handle("/space", wrapRoot(root, handleSpacePost)).Methods("POST") r.Handle("/space/{space}", wrapRoot(root, handleSpaceGet)).Methods("GET")