diff options
author | Runxi Yu <me@runxiyu.org> | 2025-03-25 01:43:33 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-03-25 01:50:41 +0800 |
commit | 11b50de72c7088c1d288329b2f40509457639ed0 (patch) | |
tree | 5a5f1aad2da94d364ef0b406786b5756b0b0714b | |
parent | Add prometheus (diff) | |
download | forge-11b50de72c7088c1d288329b2f40509457639ed0.tar.gz forge-11b50de72c7088c1d288329b2f40509457639ed0.tar.zst forge-11b50de72c7088c1d288329b2f40509457639ed0.zip |
Fix regression in tree/raw dir handling
-rw-r--r-- | http_server.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/http_server.go b/http_server.go index 6531748..73e27f6 100644 --- a/http_server.go +++ b/http_server.go @@ -38,7 +38,9 @@ func (router *forgeHTTPRouter) ServeHTTP(writer http.ResponseWriter, request *ht http.Error(writer, err.Error(), http.StatusBadRequest) return } + dirMode := false if segments[len(segments)-1] == "" { + dirMode = true segments = segments[:len(segments)-1] } @@ -184,7 +186,11 @@ func (router *forgeHTTPRouter) ServeHTTP(writer http.ResponseWriter, request *ht errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments") return } - params["rest"] = strings.Join(segments[sepIndex+4:], "/") + if dirMode { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + "/" + } else { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + } if len(segments) < sepIndex+5 && redirectDir(writer, request) { return } @@ -194,7 +200,11 @@ func (router *forgeHTTPRouter) ServeHTTP(writer http.ResponseWriter, request *ht errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments") return } - params["rest"] = strings.Join(segments[sepIndex+4:], "/") + if dirMode { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + "/" + } else { + params["rest"] = strings.Join(segments[sepIndex+4:], "/") + } if len(segments) < sepIndex+5 && redirectDir(writer, request) { return } |