diff options
Diffstat (limited to 'src/server/api/limiter.ts')
| -rw-r--r-- | src/server/api/limiter.ts | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/server/api/limiter.ts b/src/server/api/limiter.ts index 3d66172fd8..48d12d3cc6 100644 --- a/src/server/api/limiter.ts +++ b/src/server/api/limiter.ts @@ -2,19 +2,13 @@ import * as Limiter from 'ratelimiter'; import limiterDB from '../../db/redis'; import { IEndpoint } from './endpoints'; import getAcct from '../../misc/acct/render'; -import { IUser } from '../../models/user'; +import { User } from '../../models/entities/user'; import Logger from '../../services/logger'; const logger = new Logger('limiter'); -export default (endpoint: IEndpoint, user: IUser) => new Promise((ok, reject) => { - // Redisがインストールされてない場合は常に許可 - if (limiterDB == null) { - ok(); - return; - } - - const limitation = endpoint.meta.limit; +export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) => { + const limitation = endpoint.meta.limit!; const key = limitation.hasOwnProperty('key') ? limitation.key @@ -38,10 +32,10 @@ export default (endpoint: IEndpoint, user: IUser) => new Promise((ok, reject) => // Short-term limit function min() { const minIntervalLimiter = new Limiter({ - id: `${user._id}:${key}:min`, + id: `${user.id}:${key}:min`, duration: limitation.minInterval, max: 1, - db: limiterDB + db: limiterDB! }); minIntervalLimiter.get((err, info) => { @@ -66,10 +60,10 @@ export default (endpoint: IEndpoint, user: IUser) => new Promise((ok, reject) => // Long term limit function max() { const limiter = new Limiter({ - id: `${user._id}:${key}`, + id: `${user.id}:${key}`, duration: limitation.duration, max: limitation.max, - db: limiterDB + db: limiterDB! }); limiter.get((err, info) => { |