saasitone/pkg/handlers/error.go

43 lines
856 B
Go
Raw Normal View History

package handlers
2021-12-03 03:11:01 -08:00
import (
"net/http"
"github.com/labstack/echo/v4"
2022-11-02 16:23:26 -07:00
"github.com/mikestefanello/pagoda/pkg/context"
"github.com/mikestefanello/pagoda/pkg/controller"
"github.com/mikestefanello/pagoda/templates"
2021-12-03 03:11:01 -08:00
)
type Error struct {
controller.Controller
2021-12-03 03:11:01 -08:00
}
func (e *Error) Page(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 = templates.LayoutMain
page.Name = templates.PageError
page.Title = http.StatusText(code)
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
}
}