From 982c2a4cb5358d33969a8501ec22d3d71a7cc1cd Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Wed, 30 Jul 2025 19:15:18 -0300 Subject: [PATCH] feat(smalltrip,problem): panic middleware --- smalltrip/problem/middleware.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/smalltrip/problem/middleware.go b/smalltrip/problem/middleware.go index c3870bf..fd4de0e 100644 --- a/smalltrip/problem/middleware.go +++ b/smalltrip/problem/middleware.go @@ -17,11 +17,29 @@ package problem import ( "context" + "fmt" "net/http" "forge.capytal.company/loreddev/x/smalltrip/middleware" ) +// TODO?: BufferedMiddleware, a middleware which can respond or redirect to +// a error page even after the first Write + +func PanicMiddleware() middleware.Middleware { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + defer func() { + if rv := recover(); rv != nil { + err := fmt.Errorf("panic recovered: %+v", rv) + NewInternalServerError(err).ServeHTTP(w, r) + } + }() + next.ServeHTTP(w, r) + }) + } +} + func Middleware(h Handler) middleware.Middleware { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {