package utils import ( "io" "net/http" "strconv" "codeberg.org/rimgo/rimgo/render" "codeberg.org/rimgo/rimgo/static" ) func RenderError(w http.ResponseWriter, r *http.Request, code int) error { if !Accepts(r, "text/html") && r.PathValue("extension") != "" { codeStr := "generic" if code != 0 { codeStr = strconv.Itoa(code) } w.Header().Set("Content-Type", "image/png") w.WriteHeader(code) file, _ := static.GetFiles().Open("img/error-" + codeStr + ".png") defer file.Close() _, err := io.Copy(w, file) if err != nil { // panic on error to avoid a loop panic(err) } } else { w.WriteHeader(code) err := render.Render(w, "errors/"+strconv.Itoa(code), map[string]any{ "path": r.URL.Path, }) if err != nil { // panic on error to avoid a loop panic(err) } } return nil }