This go package provides a key based limiter for the go programming language. See Godoc.
Open your terminal in the root folder of your go project and go get;
go get github.com/mrwaggel/golimiter
package main
import (
"github.com/mrwaggel/golimiter"
"time"
)
var l golimiter.Limiter
func main() {
l = golimiter.New(4, time.Second*5)
key := "a"
l.Increment(key)
l.Increment(key)
l.Increment(key)
l.Count(key) // 3
l.IsLimited(key) // false
l.Increment(key)
l.Count(key) // 4
l.IsLimited(key) // true
time.Sleep(time.Second * 6)
l.Count(key) // 0
l.IsLimited(key) // false
}
golimiter.Limiter
The limit defines how many times a key can be incremented before IsLimited returns true within the given time frame 'expiresAfter'.
golimiter.New(limit int, expiresAfter time.Duration) golimiter.Limiter
(golimiter.Limiter).Increment(key interface{})
(golimiter.Limiter).IsLimited(key interface{}) bool
(golimiter.Limiter).Remove(key interface{})
(golimiter.Limiter).Count(key interface{}) int
A limiter could be handy to limit login attempts on a website, or wrong captcha inputs, API requests.
Pages
Software
Tools