diff options
Diffstat (limited to 'vendor/github.com/ulule/limiter/v3/drivers/middleware/gin/middleware.go')
-rw-r--r-- | vendor/github.com/ulule/limiter/v3/drivers/middleware/gin/middleware.go | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/vendor/github.com/ulule/limiter/v3/drivers/middleware/gin/middleware.go b/vendor/github.com/ulule/limiter/v3/drivers/middleware/gin/middleware.go deleted file mode 100644 index 23bad417a..000000000 --- a/vendor/github.com/ulule/limiter/v3/drivers/middleware/gin/middleware.go +++ /dev/null @@ -1,65 +0,0 @@ -package gin - -import ( - "strconv" - - "github.com/gin-gonic/gin" - - "github.com/ulule/limiter/v3" -) - -// Middleware is the middleware for gin. -type Middleware struct { - Limiter *limiter.Limiter - OnError ErrorHandler - OnLimitReached LimitReachedHandler - KeyGetter KeyGetter - ExcludedKey func(string) bool -} - -// NewMiddleware return a new instance of a gin middleware. -func NewMiddleware(limiter *limiter.Limiter, options ...Option) gin.HandlerFunc { - middleware := &Middleware{ - Limiter: limiter, - OnError: DefaultErrorHandler, - OnLimitReached: DefaultLimitReachedHandler, - KeyGetter: DefaultKeyGetter, - ExcludedKey: nil, - } - - for _, option := range options { - option.apply(middleware) - } - - return func(ctx *gin.Context) { - middleware.Handle(ctx) - } -} - -// Handle gin request. -func (middleware *Middleware) Handle(c *gin.Context) { - key := middleware.KeyGetter(c) - if middleware.ExcludedKey != nil && middleware.ExcludedKey(key) { - c.Next() - return - } - - context, err := middleware.Limiter.Get(c, key) - if err != nil { - middleware.OnError(c, err) - c.Abort() - return - } - - c.Header("X-RateLimit-Limit", strconv.FormatInt(context.Limit, 10)) - c.Header("X-RateLimit-Remaining", strconv.FormatInt(context.Remaining, 10)) - c.Header("X-RateLimit-Reset", strconv.FormatInt(context.Reset, 10)) - - if context.Reached { - middleware.OnLimitReached(c) - c.Abort() - return - } - - c.Next() -} |