diff options
| author | dakkar <dakkar@thenautilus.net> | 2024-09-20 09:16:44 +0100 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2024-09-20 09:16:44 +0100 |
| commit | 8a982c61c01909e7540ff1be9f019df07c3f0624 (patch) | |
| tree | bee8b534bc2f2aeed29646f56badabb91c43e686 /packages/backend/src | |
| parent | copy RateLimiterService from MisskeyIO (diff) | |
| download | sharkey-8a982c61c01909e7540ff1be9f019df07c3f0624.tar.gz sharkey-8a982c61c01909e7540ff1be9f019df07c3f0624.tar.bz2 sharkey-8a982c61c01909e7540ff1be9f019df07c3f0624.zip | |
move rate-limit-exceeded error reporting, earlier
a rate-limit-exceeded error has `kind:'client'`, so the branch that
adds the `Retry-After` would never get taken
Diffstat (limited to 'packages/backend/src')
| -rw-r--r-- | packages/backend/src/server/api/ApiCallService.ts | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts index 47f64f6609..808795fdac 100644 --- a/packages/backend/src/server/api/ApiCallService.ts +++ b/packages/backend/src/server/api/ApiCallService.ts @@ -64,15 +64,6 @@ export class ApiCallService implements OnApplicationShutdown { let statusCode = err.httpStatusCode; if (err.httpStatusCode === 401) { reply.header('WWW-Authenticate', 'Bearer realm="Misskey"'); - } else if (err.kind === 'client') { - reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="invalid_request", error_description="${err.message}"`); - statusCode = statusCode ?? 400; - } else if (err.kind === 'permission') { - // (ROLE_PERMISSION_DENIEDは関係ない) - if (err.code === 'PERMISSION_DENIED') { - reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="insufficient_scope", error_description="${err.message}"`); - } - statusCode = statusCode ?? 403; } else if (err.code === 'RATE_LIMIT_EXCEEDED') { const info: unknown = err.info; const unixEpochInSeconds = Date.now(); @@ -83,6 +74,15 @@ export class ApiCallService implements OnApplicationShutdown { } else { this.logger.warn(`rate limit information has unexpected type ${typeof(err.info?.reset)}`); } + } else if (err.kind === 'client') { + reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="invalid_request", error_description="${err.message}"`); + statusCode = statusCode ?? 400; + } else if (err.kind === 'permission') { + // (ROLE_PERMISSION_DENIEDは関係ない) + if (err.code === 'PERMISSION_DENIED') { + reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="insufficient_scope", error_description="${err.message}"`); + } + statusCode = statusCode ?? 403; } else if (!statusCode) { statusCode = 500; } |