From d82a8c0c1a37f8395fc665150aa7a34da8dd974f Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Fri, 14 Feb 2025 09:04:07 +0800 Subject: [PATCH] http_*.go: Abstract out render_template for deduplication --- http_handle_group_index.go | 6 +----- http_handle_index.go | 6 +----- http_handle_login.go | 16 +++------------- http_handle_repo_commit.go | 7 ++----- http_handle_repo_index.go | 7 ++----- http_handle_repo_log.go | 7 ++----- http_handle_repo_raw.go | 7 ++----- http_handle_repo_tree.go | 13 +++---------- http_template.go | 10 ++++++++++ diff --git a/http_handle_group_index.go b/http_handle_group_index.go index 670c1283df51fd08db7465da79f63f692ab75a77..a7d087914fdd33e3b9456a97af7dced2dedc2df0 100644 --- a/http_handle_group_index.go +++ b/http_handle_group_index.go @@ -13,9 +13,5 @@ return } params["repos"] = repos - err = templates.ExecuteTemplate(w, "group_repos", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "group_repos", params) } diff --git a/http_handle_index.go b/http_handle_index.go index ee92c495b4b543e1b08b3dcb7bd6e1a25f1c1082..6a870c2cc610af18e21532cb95123afd74a22948 100644 --- a/http_handle_index.go +++ b/http_handle_index.go @@ -11,9 +11,5 @@ http.Error(w, "Error querying groups: "+err.Error(), http.StatusInternalServerError) return } params["groups"] = groups - err = templates.ExecuteTemplate(w, "index", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "index", params) } diff --git a/http_handle_login.go b/http_handle_login.go index 0785ecc35dfd9f9eacba9aa3138cc1144b6c10f3..b43e13377b9d5d539470f980954eb83145d12030 100644 --- a/http_handle_login.go +++ b/http_handle_login.go @@ -14,10 +14,7 @@ ) func handle_login(w http.ResponseWriter, r *http.Request, params map[string]any) { if r.Method != "POST" { - err := templates.ExecuteTemplate(w, "login", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - } + render_template(w, "login", params) return } @@ -30,10 +27,7 @@ err := database.QueryRow(r.Context(), "SELECT id, password FROM users WHERE username = $1", username).Scan(&user_id, &password_hash) if err != nil { if errors.Is(err, pgx.ErrNoRows) { params["login_error"] = "Unknown username" - err := templates.ExecuteTemplate(w, "login", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - } + render_template(w, "login", params) return } http.Error(w, "Error querying user information: "+err.Error(), http.StatusInternalServerError) @@ -48,11 +42,7 @@ } if !match { params["login_error"] = "Invalid password" - err := templates.ExecuteTemplate(w, "login", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "login", params) return } diff --git a/http_handle_repo_commit.go b/http_handle_repo_commit.go index ee21f160ca1f006e0b10898ab6e17ceb3ed65628..2732b4e69098de56e4926f1487328f3e64235eb7 100644 --- a/http_handle_repo_commit.go +++ b/http_handle_repo_commit.go @@ -79,11 +79,8 @@ usable_file_patches = append(usable_file_patches, usable_file_patch) } params["file_patches"] = usable_file_patches - err = templates.ExecuteTemplate(w, "repo_commit", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "repo_commit", params) + return } type fake_diff_file struct { diff --git a/http_handle_repo_index.go b/http_handle_repo_index.go index ea1854e3cd883e7c35e87c0a7cd4455ef0bca607..890c5c73f301b0a539f89ad6ddeb9893ae3fd47d 100644 --- a/http_handle_repo_index.go +++ b/http_handle_repo_index.go @@ -40,9 +40,6 @@ params["files"] = build_display_git_tree(tree) params["clone_url"] = generate_ssh_remote_url(group_name, repo_name) - err = templates.ExecuteTemplate(w, "repo_index", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "repo_index", params) + return } diff --git a/http_handle_repo_log.go b/http_handle_repo_log.go index d4422b7bdc19accd9bc1a04b7961259895d6b184..7fec91d4d49d2eb3c99f1523b300006df7404269 100644 --- a/http_handle_repo_log.go +++ b/http_handle_repo_log.go @@ -28,9 +28,6 @@ return } params["commits"] = commits - err = templates.ExecuteTemplate(w, "repo_log", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "repo_log", params) + return } diff --git a/http_handle_repo_raw.go b/http_handle_repo_raw.go index 1d04f6cda6242bf9c9f59a416398d0a2527d2e7a..69a6a8c50d14484f8b437bff8b3437637d9cacce 100644 --- a/http_handle_repo_raw.go +++ b/http_handle_repo_raw.go @@ -71,9 +71,6 @@ } params["files"] = build_display_git_tree(target) - err = templates.ExecuteTemplate(w, "repo_raw_dir", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "repo_raw_dir", params) + return } diff --git a/http_handle_repo_tree.go b/http_handle_repo_tree.go index f5fbaadca8e3a59d30291f1fa42c3adf5321b8e5..6babd140f85e0ca4d09143d6ec225dd7b010c1b6 100644 --- a/http_handle_repo_tree.go +++ b/http_handle_repo_tree.go @@ -80,11 +80,7 @@ } formatted_encapsulated := template.HTML(formatted_unencapsulated.Bytes()) params["file_contents"] = formatted_encapsulated - err = templates.ExecuteTemplate(w, "repo_tree_file", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "repo_tree_file", params) return } } @@ -97,9 +93,6 @@ params["readme_filename"], params["readme"] = render_readme_at_tree(target) params["files"] = build_display_git_tree(target) - err = templates.ExecuteTemplate(w, "repo_tree_dir", params) - if err != nil { - http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) - return - } + render_template(w, "repo_tree_dir", params) + return } diff --git a/http_template.go b/http_template.go new file mode 100644 index 0000000000000000000000000000000000000000..d135c715a41e695d5b96252567c75c9774e0008d --- /dev/null +++ b/http_template.go @@ -0,0 +1,10 @@ +package main + +import "net/http" + +func render_template(w http.ResponseWriter, template_name string, params map[string]any) { + err := templates.ExecuteTemplate(w, template_name, params) + if err != nil { + http.Error(w, "Error rendering template: "+err.Error(), http.StatusInternalServerError) + } +} -- 2.48.1