Skip to content

Commit

Permalink
fix: support directory listings even if a 404 page is present
Browse files Browse the repository at this point in the history
fixes #4233 (comment)

Basically, there's a trade-off here:

1. We can support directory listings while supporting 404 pages (this PR).
2. If a 404 page is present, directory listings don't work.

Given that option 1 is more flexible and users shouldn't be _too_ confused if
they land on a directory with no index.html page, I've gone with that option.
  • Loading branch information
Stebalien committed May 21, 2020
1 parent e0aa23d commit 6a2fe0a
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 7 deletions.
4 changes: 0 additions & 4 deletions core/corehttp/gateway_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -307,10 +307,6 @@ func (i *gatewayHandler) getOrHeadHandler(w http.ResponseWriter, r *http.Request
return
}

if i.servePretty404IfPresent(w, r, parsedPath) {
return
}

// storage for directory listing
var dirListing []directoryItem
dirit := dir.Entries()
Expand Down
6 changes: 3 additions & 3 deletions core/corehttp/gateway_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,8 @@ func TestPretty404(t *testing.T) {
{"/nope", "*/*", http.StatusNotFound, "Custom 404"},
{"/nope", "application/json", http.StatusNotFound, "ipfs resolve -r /ipns/example.net/nope: no link named \"nope\" under QmcmnF7XG5G34RdqYErYDwCKNFQ6jb8oKVR21WAJgubiaj\n"},
{"/deeper/nope", "text/html", http.StatusNotFound, "Deep custom 404"},
{"/deeper/", "text/html", http.StatusNotFound, "Deep custom 404"},
{"/deeper", "text/html", http.StatusNotFound, "Deep custom 404"},
{"/deeper/", "text/html", http.StatusOK, ""},
{"/deeper", "text/html", http.StatusOK, ""},
{"/nope/nope", "text/html", http.StatusNotFound, "Custom 404"},
} {
var c http.Client
Expand All @@ -293,7 +293,7 @@ func TestPretty404(t *testing.T) {
t.Fatalf("error reading response from %s: %s", test.path, err)
}

if string(body) != test.text {
if test.text != "" && string(body) != test.text {
t.Fatalf("unexpected response body from %s: got %q, expected %q", test.path, body, test.text)
}
}
Expand Down

0 comments on commit 6a2fe0a

Please sign in to comment.