rc: Fix serving bucket based objects with --rc-serve

Before this change serving bucket based objects
`[remote:bucket]/path/to/object` would fail with 404 not found.

This was because the leading `/` in `/path/to/object` was being passed
to NewObject.
This commit is contained in:
Nick Craig-Wood 2019-06-10 11:59:06 +01:00
parent 2c72e7f0a2
commit f681d32996
2 changed files with 11 additions and 1 deletions

View File

@ -243,6 +243,7 @@ func (s *Server) serveRemote(w http.ResponseWriter, r *http.Request, path string
}
directory.Serve(w, r)
} else {
path = strings.Trim(path, "/")
o, err := f.NewObject(path)
if err != nil {
writeError(path, nil, w, errors.Wrap(err, "failed to find object"), http.StatusInternalServerError)

View File

@ -8,6 +8,7 @@ import (
"net/http"
"net/http/httptest"
"regexp"
"strings"
"testing"
"time"
@ -229,7 +230,7 @@ func TestRemoteServing(t *testing.T) {
Expected: `{
"error": "failed to find object: object not found",
"input": null,
"path": "/notfound",
"path": "notfound",
"status": 404
}
`,
@ -268,6 +269,14 @@ func TestRemoteServing(t *testing.T) {
Headers: map[string]string{
"Content-Length": "18",
},
}, {
Name: "file with no slash after ]",
URL: strings.TrimRight(remoteURL, "/") + "file.txt",
Status: http.StatusOK,
Expected: "this is file1.txt\n",
Headers: map[string]string{
"Content-Length": "18",
},
}, {
Name: "file2",
URL: remoteURL + "dir/file2.txt",