diff options
author | Runxi Yu <me@runxiyu.org> | 2025-04-05 23:18:30 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-04-05 23:18:30 +0800 |
commit | edc30e6d36b51f73d2db31e6fbc55f86e8ca451f (patch) | |
tree | 5d15da4dc72b71e86f7293e51d12b29706e8889a /http_server.go | |
parent | Remove an unnecessary nolint:gochecknoglobals (diff) | |
download | forge-edc30e6d36b51f73d2db31e6fbc55f86e8ca451f.tar.gz forge-edc30e6d36b51f73d2db31e6fbc55f86e8ca451f.tar.zst forge-edc30e6d36b51f73d2db31e6fbc55f86e8ca451f.zip |
web: Separate HTTP error pages into its own package
Diffstat (limited to 'http_server.go')
-rw-r--r-- | http_server.go | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/http_server.go b/http_server.go index f5f6328..b2c93b9 100644 --- a/http_server.go +++ b/http_server.go @@ -13,6 +13,7 @@ import ( "github.com/jackc/pgx/v5" "go.lindenii.runxiyu.org/forge/internal/misc" + "go.lindenii.runxiyu.org/forge/internal/web" ) // ServeHTTP handles all incoming HTTP requests and routes them to the correct @@ -39,7 +40,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { params := make(map[string]any) if segments, _, err = misc.ParseReqURI(request.RequestURI); err != nil { - errorPage400(writer, params, "Error parsing request URI: "+err.Error()) + web.ErrorPage400(templates, writer, params, "Error parsing request URI: "+err.Error()) return } dirMode := false @@ -55,7 +56,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { userID, params["username"], err = s.getUserFromRequest(request) params["user_id"] = userID if err != nil && !errors.Is(err, http.ErrNoCookie) && !errors.Is(err, pgx.ErrNoRows) { - errorPage500(writer, params, "Error getting user info from request: "+err.Error()) + web.ErrorPage500(templates, writer, params, "Error getting user info from request: "+err.Error()) return } @@ -67,7 +68,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { for _, v := range segments { if strings.Contains(v, ":") { - errorPage400Colon(writer, params) + web.ErrorPage400Colon(templates, writer, params) return } } @@ -79,7 +80,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { if segments[0] == "-" { if len(segments) < 2 { - errorPage404(writer, params) + web.ErrorPage404(templates, writer, params) return } else if len(segments) == 2 && misc.RedirectDir(writer, request) { return @@ -104,7 +105,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { httpHandleUsers(writer, request, params) return default: - errorPage404(writer, params) + web.ErrorPage404(templates, writer, params) return } } @@ -137,10 +138,10 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { } s.httpHandleGroupIndex(writer, request, params) case len(segments) == sepIndex+1: - errorPage404(writer, params) + web.ErrorPage404(templates, writer, params) return case len(segments) == sepIndex+2: - errorPage404(writer, params) + web.ErrorPage404(templates, writer, params) return default: moduleType = segments[sepIndex+1] @@ -153,12 +154,12 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { switch segments[sepIndex+3] { case "info": if err = s.httpHandleRepoInfo(writer, request, params); err != nil { - errorPage500(writer, params, err.Error()) + web.ErrorPage500(templates, writer, params, err.Error()) } return case "git-upload-pack": if err = s.httpHandleUploadPack(writer, request, params); err != nil { - errorPage500(writer, params, err.Error()) + web.ErrorPage500(templates, writer, params, err.Error()) } return } @@ -168,13 +169,13 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { if errors.Is(err, misc.ErrNoRefSpec) { params["ref_type"] = "" } else { - errorPage400(writer, params, "Error querying ref type: "+err.Error()) + web.ErrorPage400(templates, writer, params, "Error querying ref type: "+err.Error()) return } } if params["repo"], params["repo_description"], params["repo_id"], _, err = s.openRepo(request.Context(), groupPath, moduleName); err != nil { - errorPage500(writer, params, "Error opening repo: "+err.Error()) + web.ErrorPage500(templates, writer, params, "Error opening repo: "+err.Error()) return } @@ -199,7 +200,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { switch repoFeature { case "tree": if misc.AnyContain(segments[sepIndex+4:], "/") { - errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments") + web.ErrorPage400(templates, writer, params, "Repo tree paths may not contain slashes in any segments") return } if dirMode { @@ -219,7 +220,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { return case "raw": if misc.AnyContain(segments[sepIndex+4:], "/") { - errorPage400(writer, params, "Repo tree paths may not contain slashes in any segments") + web.ErrorPage400(templates, writer, params, "Repo tree paths may not contain slashes in any segments") return } if dirMode { @@ -233,7 +234,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { s.httpHandleRepoRaw(writer, request, params) case "log": if len(segments) > sepIndex+4 { - errorPage400(writer, params, "Too many parameters") + web.ErrorPage400(templates, writer, params, "Too many parameters") return } if misc.RedirectDir(writer, request) { @@ -242,7 +243,7 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { httpHandleRepoLog(writer, request, params) case "commit": if len(segments) != sepIndex+5 { - errorPage400(writer, params, "Incorrect number of parameters") + web.ErrorPage400(templates, writer, params, "Incorrect number of parameters") return } if misc.RedirectNoDir(writer, request) { @@ -261,14 +262,14 @@ func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { params["mr_id"] = segments[sepIndex+4] s.httpHandleRepoContribOne(writer, request, params) default: - errorPage400(writer, params, "Too many parameters") + web.ErrorPage400(templates, writer, params, "Too many parameters") } default: - errorPage404(writer, params) + web.ErrorPage404(templates, writer, params) return } default: - errorPage404(writer, params) + web.ErrorPage404(templates, writer, params) return } } |