all repos — searchix @ 2d5ee7b69cbe27e7e1abef7bf3451cb6455c4387

Search engine for NixOS, nix-darwin, home-manager and NUR users

feat: render HTML error pages

Alan Pearce
commit

2d5ee7b69cbe27e7e1abef7bf3451cb6455c4387

parent

149cbe7681607eb48f47df14c7a39e6f289fb7b6

1 file changed, 43 insertions(+), 0 deletions(-)

changed files
A internal/server/error.go
@@ -0,0 +1,43 @@
+package server + +import ( + "log/slog" + "net/http" + "searchix/internal/config" +) + +func createErrorHandler( + config *config.Config, +) func(http.ResponseWriter, *http.Request, string, int) { + return func(w http.ResponseWriter, r *http.Request, message string, code int) { + var err error + if message == "" { + message = http.StatusText(code) + } + indexData := TemplateData{ + ExtraHeadHTML: config.Web.ExtraHeadHTML, + Sources: config.Importer.Sources, + Version: *versionInfo, + Code: code, + Message: message, + } + w.WriteHeader(code) + if r.Header.Get("Fetch") == "true" { + err = templates["error"].ExecuteTemplate(w, "main", indexData) + } else { + err = templates["error"].Execute(w, indexData) + } + if err != nil { + slog.Error( + "error rendering error page template", + "error", + err, + "code", + code, + "message", + message, + ) + http.Error(w, message, code) + } + } +}