API v3 Rate Limiter (#12117)

* simplify ip address management by using the trust proxy express option

* add setupExpress file

* fix redirects middleware tests

* fix lint

* short circuit the ip blocking middleware

* basic implementation with ip based limiting

* improve logging

* upgrade apidoc

* apidoc: add introduction section

* fix lint

* fix tests

* fix lint

* add unit tests for rate limiter

* do not send retry-after header when points are available

* automatically fix lint

* fix more lint issues

* use userId as key for rate limit when available
This commit is contained in:
Matteo Pagliazzi
2020-07-17 16:13:51 +02:00
parent e3bcc48481
commit e7c8833c9a
15 changed files with 332 additions and 61 deletions

View File

@@ -51,6 +51,15 @@ export class Forbidden extends CustomError {
}
}
export class TooManyRequests extends CustomError {
constructor (customMessage) {
super();
this.name = this.constructor.name;
this.httpCode = 429;
this.message = customMessage || 'Too many requests.';
}
}
export class NotImplementedError extends CustomError {
constructor (str) {
super();