29 lines
530 B
Go
29 lines
530 B
Go
package common
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/ulule/limiter/v3"
|
|
)
|
|
|
|
// GetContextFromState generate a new limiter.Context from given state.
|
|
func GetContextFromState(now time.Time, rate limiter.Rate, expiration time.Time, count int64) limiter.Context {
|
|
limit := rate.Limit
|
|
remaining := int64(0)
|
|
reached := true
|
|
|
|
if count <= limit {
|
|
remaining = limit - count
|
|
reached = false
|
|
}
|
|
|
|
reset := expiration.Unix()
|
|
|
|
return limiter.Context{
|
|
Limit: limit,
|
|
Remaining: remaining,
|
|
Reset: reset,
|
|
Reached: reached,
|
|
}
|
|
}
|