Continued e-mail support
This commit is contained in:
@@ -17,6 +17,7 @@ const (
|
||||
// visitor represents an API user, and its associated rate.Limiter used for rate limiting
|
||||
type visitor struct {
|
||||
config *Config
|
||||
ip string
|
||||
requests *rate.Limiter
|
||||
emails *rate.Limiter
|
||||
subscriptions *util.Limiter
|
||||
@@ -24,9 +25,10 @@ type visitor struct {
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func newVisitor(conf *Config) *visitor {
|
||||
func newVisitor(conf *Config, ip string) *visitor {
|
||||
return &visitor{
|
||||
config: conf,
|
||||
ip: ip,
|
||||
requests: rate.NewLimiter(rate.Every(conf.VisitorRequestLimitReplenish), conf.VisitorRequestLimitBurst),
|
||||
emails: rate.NewLimiter(rate.Every(conf.VisitorEmailLimitReplenish), conf.VisitorEmailLimitBurst),
|
||||
subscriptions: util.NewLimiter(int64(conf.VisitorSubscriptionLimit)),
|
||||
@@ -34,6 +36,10 @@ func newVisitor(conf *Config) *visitor {
|
||||
}
|
||||
}
|
||||
|
||||
func (v *visitor) IP() string {
|
||||
return v.ip
|
||||
}
|
||||
|
||||
func (v *visitor) RequestAllowed() error {
|
||||
if !v.requests.Allow() {
|
||||
return errHTTPTooManyRequests
|
||||
|
||||
Reference in New Issue
Block a user