summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-02-12 11:20:17 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-02-12 11:20:17 +0900
commitc5ef6bf38ada420e80091891f57beeaa6b87b68c (patch)
treed2f2f7b3c4586df1ab1af0cf61af2ca5571810cc /packages/backend/src/server/api
parentMerge branch 'develop' (diff)
parent13.6.1 (diff)
downloadmisskey-c5ef6bf38ada420e80091891f57beeaa6b87b68c.tar.gz
misskey-c5ef6bf38ada420e80091891f57beeaa6b87b68c.tar.bz2
misskey-c5ef6bf38ada420e80091891f57beeaa6b87b68c.zip
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/ApiCallService.ts18
-rw-r--r--packages/backend/src/server/api/endpoints/users/lists/push.ts17
2 files changed, 25 insertions, 10 deletions
diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts
index 395a1c468a..2f3e7a44a9 100644
--- a/packages/backend/src/server/api/ApiCallService.ts
+++ b/packages/backend/src/server/api/ApiCallService.ts
@@ -227,15 +227,17 @@ export class ApiCallService implements OnApplicationShutdown {
// TODO: 毎リクエスト計算するのもあれだしキャッシュしたい
const factor = user ? (await this.roleService.getUserPolicies(user.id)).rateLimitFactor : 1;
- // Rate limit
- await this.rateLimiterService.limit(limit as IEndpointMeta['limit'] & { key: NonNullable<string> }, limitActor, factor).catch(err => {
- throw new ApiError({
- message: 'Rate limit exceeded. Please try again later.',
- code: 'RATE_LIMIT_EXCEEDED',
- id: 'd5826d14-3982-4d2e-8011-b9e9f02499ef',
- httpStatusCode: 429,
+ if (factor > 0) {
+ // Rate limit
+ await this.rateLimiterService.limit(limit as IEndpointMeta['limit'] & { key: NonNullable<string> }, limitActor, factor).catch(err => {
+ throw new ApiError({
+ message: 'Rate limit exceeded. Please try again later.',
+ code: 'RATE_LIMIT_EXCEEDED',
+ id: 'd5826d14-3982-4d2e-8011-b9e9f02499ef',
+ httpStatusCode: 429,
+ });
});
- });
+ }
}
if (ep.meta.requireCredential || ep.meta.requireModerator || ep.meta.requireAdmin) {
diff --git a/packages/backend/src/server/api/endpoints/users/lists/push.ts b/packages/backend/src/server/api/endpoints/users/lists/push.ts
index 3a079ee1ab..1c1fdc23f1 100644
--- a/packages/backend/src/server/api/endpoints/users/lists/push.ts
+++ b/packages/backend/src/server/api/endpoints/users/lists/push.ts
@@ -45,6 +45,12 @@ export const meta = {
code: 'YOU_HAVE_BEEN_BLOCKED',
id: '990232c5-3f9d-4d83-9f3f-ef27b6332a4b',
},
+
+ tooManyUsers: {
+ message: 'You can not push users any more.',
+ code: 'TOO_MANY_USERS',
+ id: '2dd9752e-a338-413d-8eec-41814430989b',
+ },
},
} as const;
@@ -110,8 +116,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
throw new ApiError(meta.errors.alreadyAdded);
}
- // Push the user
- await this.userListService.push(user, userList, me);
+ try {
+ await this.userListService.push(user, userList, me);
+ } catch (err) {
+ if (err instanceof UserListService.TooManyUsersError) {
+ throw new ApiError(meta.errors.tooManyUsers);
+ }
+
+ throw err;
+ }
});
}
}