Files
hadrian/handlers/error_page.go
2023-12-13 00:25:14 -05:00

33 lines
646 B
Go

package handlers
import (
"embed"
"fmt"
"html/template"
"strings"
"github.com/gofiber/fiber/v2"
)
//go:embed error_page.html
var errorHTML embed.FS
func RenderErrorPage() fiber.Handler {
f := "error_page.html"
tmpl, err := template.ParseFS(errorHTML, f)
if err != nil {
panic(fmt.Errorf("RenderErrorPage Error: %s not found", f))
}
return func(c *fiber.Ctx) error {
if err := c.Next(); err != nil {
if strings.Contains(c.Get("Accept"), "text/html") {
c.Set("Content-Type", "text/html")
tmpl.Execute(c.Response().BodyWriter(), err.Error())
return nil
}
return c.SendString(err.Error())
}
return err
}
}