diff --git a/handlers/pages/error.templ b/handlers/pages/error.templ index 72ef9eb..152ebdf 100644 --- a/handlers/pages/error.templ +++ b/handlers/pages/error.templ @@ -13,6 +13,12 @@ templ (p ErrorPage) Component(err rerrors.RouteError) {

Error

{ fmt.Sprintf("%#v", err) }

+ for k, v := range err.Info { +

{ k } { fmt.Sprint(v) }

+ } + if err.Endpoint != "" { + Retry + }
} } diff --git a/handlers/pages/routes.go b/handlers/pages/routes.go index 50be3b2..7dbed57 100644 --- a/handlers/pages/routes.go +++ b/handlers/pages/routes.go @@ -20,6 +20,7 @@ func Routes(logger *slog.Logger) router.Router { if r.URL.Path != "/" { rerrors.NotFound().ServeHTTP(w, r) } + }) return r diff --git a/router/rerrors/errors.go b/router/rerrors/errors.go index d32d501..a6b220c 100644 --- a/router/rerrors/errors.go +++ b/router/rerrors/errors.go @@ -20,6 +20,7 @@ type RouteError struct { StatusCode int `json:"status_code"` Error string `json:"error"` Info map[string]any `json:"info"` + Endpoint string } func NewRouteError(status int, error string, info ...map[string]any) RouteError { @@ -112,6 +113,14 @@ func (h ErrorDisplayer) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } + if rerr.Endpoint == "" { + q := r.URL.Query() + q.Del("error") + r.URL.RawQuery = q.Encode() + + rerr.Endpoint = r.URL.String() + } + w.WriteHeader(rerr.StatusCode) if err := h.page(rerr).Render(r.Context(), w); err != nil { _, _ = w.Write(e)