saasitone/routes/error.go

43 lines
774 B
Go
Raw Normal View History

2021-12-14 08:13:53 -08:00
package routes
2021-12-03 03:11:01 -08:00
import (
"net/http"
"github.com/mikestefanello/pagoda/context"
2022-01-01 07:44:18 -08:00
"github.com/mikestefanello/pagoda/controller"
2021-12-03 03:11:01 -08:00
"github.com/labstack/echo/v4"
)
type Error struct {
controller.Controller
2021-12-03 03:11:01 -08:00
}
func (e *Error) Get(err error, ctx echo.Context) {
if ctx.Response().Committed || context.IsCanceledError(err) {
2021-12-11 16:32:27 -08:00
return
}
2021-12-03 03:11:01 -08:00
code := http.StatusInternalServerError
if he, ok := err.(*echo.HTTPError); ok {
code = he.Code
}
if code >= 500 {
ctx.Logger().Error(err)
2021-12-03 03:11:01 -08:00
} else {
ctx.Logger().Info(err)
2021-12-03 03:11:01 -08:00
}
page := controller.NewPage(ctx)
page.Layout = "main"
page.Title = http.StatusText(code)
page.Name = "error"
page.StatusCode = code
page.HTMX.Request.Enabled = false
2021-12-03 03:11:01 -08:00
if err = e.RenderPage(ctx, page); err != nil {
ctx.Logger().Error(err)
2021-12-03 03:11:01 -08:00
}
}