Files
gomax/middleware/middleware.go
T
2026-10-02 00:48:55 +03:00

60 lines
1.4 KiB
Go

package middleware
import (
"errors"
mcontext "github.com/abelith/gomax/context"
"github.com/abelith/gomax/core"
merrors "github.com/abelith/gomax/errors"
"github.com/rs/zerolog/log"
)
func MwErrorResponder(defaultMsg string) core.Middleware {
return func(next core.HandlerFunc) core.HandlerFunc {
return func(c *mcontext.Context) error {
err := next.HandleUpdate(c)
var maxErr *merrors.GomaxError
if errors.As(err, &maxErr) {
return c.Respond(maxErr.Message)
}
if err != nil {
return c.Respond(defaultMsg)
}
return nil
}
}
}
func MwLoggerInjector() core.Middleware {
return func(next core.HandlerFunc) core.HandlerFunc {
return func(c *mcontext.Context) error {
ctx := log.Logger.With().Int64("user_id", c.Update().UserID).
Logger().WithContext(c.Context())
c.SetContext(ctx)
return next.HandleUpdate(c)
}
}
}
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)
}
}
}
func MwErrorLogger() core.Middleware {
return func(next core.HandlerFunc) core.HandlerFunc {
return func(c *mcontext.Context) error {
if err := next.HandleUpdate(c); err != nil {
log.Ctx(c).Err(err).Send()
return err
}
return nil
}
}
}