Checklist
Issue Description
When using the RateLimiter Middleware with a rate between 0 and 1 all events will be rejected instead of applying the specified rate. E.g.: e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(0.5)))
I am not saying that it is a common use case to have a rate.Limit between 0 and 1, but it is very confusing that NewRateLimiterMemoryStore() accepts a value of type float, the docs don't mention any restrictions for non-zero values but still the argument is interpreted as zero instead of its actual value.
Expected behaviour
One of those:
- the docs explains how a fractional
rate.Limit is handled
NewRateLimiterMemoryStore() only accepts integer values
- the RateLimiter interprets a fractional
rate.Limit correctly, e.g. a limit of 0.5 will result in an equivalent rate of 30 requests/minute
Actual behaviour
a fractional rate.Limit between 0 and 1 is surprisingly interpreted like a zero Limit
Version/commit
v4.2.2
Checklist
Issue Description
When using the RateLimiter Middleware with a rate between 0 and 1 all events will be rejected instead of applying the specified rate. E.g.:
e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(0.5)))I am not saying that it is a common use case to have a
rate.Limitbetween 0 and 1, but it is very confusing thatNewRateLimiterMemoryStore()accepts a value of type float, the docs don't mention any restrictions for non-zero values but still the argument is interpreted as zero instead of its actual value.Expected behaviour
One of those:
rate.Limitis handledNewRateLimiterMemoryStore()only accepts integer valuesrate.Limitcorrectly, e.g. a limit of 0.5 will result in an equivalent rate of 30 requests/minuteActual behaviour
a fractional
rate.Limitbetween 0 and 1 is surprisingly interpreted like a zero LimitVersion/commit
v4.2.2