chore: Rate limiter audit (#3965)

* chore: Rate limiter audit api/users

* Make requests required

* api/collections

* Remove checkRateLimit on FileOperation (now done at route level through rate limiter)

* auth rate limit

* Add metric logging when rate limit exceeded

* Refactor to shared configs

* test
This commit is contained in:
Tom Moor
2022-08-14 16:04:04 +01:00
committed by GitHub
parent 9338328a82
commit a326e0ee88
14 changed files with 367 additions and 282 deletions

View File

@@ -12,6 +12,7 @@ import {
NetworkError,
NotFoundError,
OfflineError,
RateLimitExceededError,
RequestError,
ServiceUnavailableError,
UpdateRequiredError,
@@ -181,6 +182,12 @@ class ApiClient {
throw new ServiceUnavailableError(error.message);
}
if (response.status === 429) {
throw new RateLimitExceededError(
`Too many requests, try again in a minute.`
);
}
throw new RequestError(`Error ${response.status}: ${error.message}`);
};

View File

@@ -12,6 +12,8 @@ export class OfflineError extends ExtendableError {}
export class ServiceUnavailableError extends ExtendableError {}
export class RateLimitExceededError extends ExtendableError {}
export class RequestError extends ExtendableError {}
export class UpdateRequiredError extends ExtendableError {}

View File

@@ -22,6 +22,7 @@ export function initSentry(history: History) {
"NetworkError",
"NotFoundError",
"OfflineError",
"RateLimitExceededError",
"ServiceUnavailableError",
"UpdateRequiredError",
"ChunkLoadError",