aboutsummaryrefslogtreecommitdiff
path: root/http_server.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-04-05 23:18:30 +0800
committerRunxi Yu <me@runxiyu.org>2025-04-05 23:18:30 +0800
commitedc30e6d36b51f73d2db31e6fbc55f86e8ca451f (patch)
tree5d15da4dc72b71e86f7293e51d12b29706e8889a /http_server.go
parentRemove an unnecessary nolint:gochecknoglobals (diff)
downloadforge-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.go37
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
}
}