mirror of
https://codeberg.org/video-prize-ranch/rimgo.git
synced 2026-01-28 17:41:13 +00:00
* use encoding/json for comment parsing * refactor by moving loop code to an UnmarshalJSON * use a preallocated array and indices to maintain order while using goroutines again, this was removed a while ago * use new struct in comment.hbs and contextComment.hbs * rewriteUrl partial to reduce rimgo-specific code in api * move RenderError into pages package to avoid import cycle between render and utils
45 lines
949 B
Go
45 lines
949 B
Go
package pages
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"codeberg.org/rimgo/rimgo/render"
|
|
"codeberg.org/rimgo/rimgo/static"
|
|
"codeberg.org/rimgo/rimgo/utils"
|
|
)
|
|
|
|
func RenderError(w http.ResponseWriter, r *http.Request, code int, str ...string) (err error) {
|
|
if len(str) != 1 {
|
|
str = []string{""}
|
|
}
|
|
codeStr := "generic"
|
|
if code == 0 {
|
|
code = 500
|
|
}
|
|
if code != 500 {
|
|
codeStr = strconv.Itoa(code)
|
|
}
|
|
if !utils.Accepts(r, "text/html") && r.PathValue("extension") != "" {
|
|
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)
|
|
|
|
} else {
|
|
w.WriteHeader(code)
|
|
err = render.Render(w, "errors/"+codeStr, map[string]any{
|
|
"path": r.URL.Path,
|
|
"err": str[0],
|
|
})
|
|
}
|
|
if err != nil {
|
|
// don't panic or return error, it will loop
|
|
fmt.Println("error in RenderError: " + err.Error())
|
|
}
|
|
return nil
|
|
}
|