Files
rimgo/utils/error.go
2026-01-19 19:11:01 +01:00

39 lines
825 B
Go

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
}