From 6522329120f0e2a73bf9c55f4f937fa3d109803d Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Thu, 12 Apr 2018 10:14:31 -0400 Subject: [PATCH 1/1] 13111: Serve /by_id/ dir. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- services/keep-web/cadaver_test.go | 16 ++++++++++++++++ services/keep-web/handler.go | 8 +++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/services/keep-web/cadaver_test.go b/services/keep-web/cadaver_test.go index 22ddd84df0..db5d373be7 100644 --- a/services/keep-web/cadaver_test.go +++ b/services/keep-web/cadaver_test.go @@ -265,6 +265,22 @@ func (s *IntegrationSuite) testCadaver(c *check.C, password string, pathFunc fun } } +func (s *IntegrationSuite) TestCadaverByID(c *check.C) { + for _, path := range []string{"/by_id", "/by_id/"} { + stdout := s.runCadaver(c, arvadostest.ActiveToken, path, "ls") + c.Check(stdout, check.Matches, `(?ms).*collection is empty.*`) + } + for _, path := range []string{ + "/by_id/" + arvadostest.FooPdh, + "/by_id/" + arvadostest.FooPdh + "/", + "/by_id/" + arvadostest.FooCollection, + "/by_id/" + arvadostest.FooCollection + "/", + } { + stdout := s.runCadaver(c, arvadostest.ActiveToken, path, "ls") + c.Check(stdout, check.Matches, `(?ms).*\s+foo\s+3 .*`) + } +} + func (s *IntegrationSuite) TestCadaverUsersDir(c *check.C) { for _, path := range []string{"/"} { stdout := s.runCadaver(c, arvadostest.ActiveToken, path, "ls") diff --git a/services/keep-web/handler.go b/services/keep-web/handler.go index 389ab73a0c..06185882dc 100644 --- a/services/keep-web/handler.go +++ b/services/keep-web/handler.go @@ -163,6 +163,12 @@ var ( "HEAD": true, "POST": true, } + // top-level dirs to serve with siteFS + siteFSDir = map[string]bool{ + "": true, // root directory + "by_id": true, + "users": true, + } ) // ServeHTTP implements http.Handler. @@ -250,7 +256,7 @@ func (h *handler) ServeHTTP(wOrig http.ResponseWriter, r *http.Request) { } else if r.URL.Path == "/status.json" { h.serveStatus(w, r) return - } else if r.URL.Path == "/" || (len(pathParts) >= 1 && pathParts[0] == "users") { + } else if siteFSDir[pathParts[0]] { useSiteFS = true } else if len(pathParts) >= 1 && strings.HasPrefix(pathParts[0], "c=") { // /c=ID[/PATH...] -- 2.30.2