diff --git a/v1/middleware/middleware.go b/v1/middleware/middleware.go index 213d15c..38a6ea3 100644 --- a/v1/middleware/middleware.go +++ b/v1/middleware/middleware.go @@ -8,10 +8,24 @@ import ( "github.com/rs/zerolog/log" ) +func MwPanicHandler() core.Middleware { + return func(next core.HandlerFunc) core.HandlerFunc { + return func(c *mcontext.Context) error { + defer func() { + p := recover() + if p != nil { + log.Fatal().Any("panic", p) + } + }() + return next(c) + } + } +} + func MwErrorResponder(defaultMsg string) core.Middleware { return func(next core.HandlerFunc) core.HandlerFunc { return func(c *mcontext.Context) error { - err := next.HandleUpdate(c) + err := next(c) var maxErr *merrors.GomaxError if errors.As(err, &maxErr) { @@ -32,7 +46,7 @@ func MwLoggerInjector() core.Middleware { ctx := log.Logger.With().Int64("user_id", c.Update().UserID). Logger().WithContext(c.Context()) c.SetContext(ctx) - return next.HandleUpdate(c) + return next(c) } } } @@ -41,7 +55,7 @@ func MwDebugState() core.Middleware { return func(next core.HandlerFunc) core.HandlerFunc { return func(c *mcontext.Context) error { log.Debug().Any("state", c.State()).Any("update", c.Update()).Send() - return next.HandleUpdate(c) + return next(c) } } } @@ -49,7 +63,7 @@ func MwDebugState() core.Middleware { func MwErrorLogger() core.Middleware { return func(next core.HandlerFunc) core.HandlerFunc { return func(c *mcontext.Context) error { - if err := next.HandleUpdate(c); err != nil { + if err := next(c); err != nil { log.Ctx(c).Err(err).Send() return err }