@@ -24,6 +24,7 @@ type RateLimitMiddleware struct {
|
||||
reset time.Duration
|
||||
ticker *time.Ticker
|
||||
limit10ReqPerMin *limiter.Limiter
|
||||
limit200ReqPerMin *limiter.Limiter
|
||||
limit200ReqPerSec *limiter.Limiter
|
||||
discordCtrl *discord.DiscordController
|
||||
}
|
||||
@@ -31,6 +32,7 @@ type RateLimitMiddleware struct {
|
||||
func NewRateLimitMiddleware(discordCtrl *discord.DiscordController, limit int64, reset time.Duration) *RateLimitMiddleware {
|
||||
rl := &RateLimitMiddleware{
|
||||
limit10ReqPerMin: util.NewRateLimiter("10-M"),
|
||||
limit200ReqPerMin: util.NewRateLimiter("200-M"),
|
||||
limit200ReqPerSec: util.NewRateLimiter("200-S"),
|
||||
discordCtrl: discordCtrl,
|
||||
limit: limit,
|
||||
@@ -131,10 +133,12 @@ func (r *RateLimitMiddleware) APIRateLimitForUserMiddleware(urlSanitizer func(_
|
||||
// getLimiter, based on reqPath & reqMethod, return instance of limiter.Limiter which needs to
|
||||
// be applied for a request. It returns nil if the request is not rate limited
|
||||
func (r *RateLimitMiddleware) getLimiter(reqPath string, reqMethod string) *limiter.Limiter {
|
||||
if reqPath == "/users/public-key" {
|
||||
return r.limit200ReqPerMin
|
||||
}
|
||||
if reqPath == "/users/ott" ||
|
||||
reqPath == "/users/verify-email" ||
|
||||
reqPath == "/user/change-email" ||
|
||||
reqPath == "/users/public-key" ||
|
||||
reqPath == "/public-collection/verify-password" ||
|
||||
reqPath == "/family/accept-invite" ||
|
||||
reqPath == "/users/srp/attributes" ||
|
||||
|
||||
Reference in New Issue
Block a user