diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2017-01-23 18:25:52 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2017-01-23 18:25:52 +0900 |
| commit | 585b8eec2333c0afe90dcd3ee8ff084c566a8785 (patch) | |
| tree | f62d4668be558916ed0380a5d9e1c6e93b75d807 /src/api | |
| parent | [Client] Display age (diff) | |
| download | sharkey-585b8eec2333c0afe90dcd3ee8ff084c566a8785.tar.gz sharkey-585b8eec2333c0afe90dcd3ee8ff084c566a8785.tar.bz2 sharkey-585b8eec2333c0afe90dcd3ee8ff084c566a8785.zip | |
Use debug
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/limitter.ts | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/api/limitter.ts b/src/api/limitter.ts index 9cc25675d8..ea1ece6a70 100644 --- a/src/api/limitter.ts +++ b/src/api/limitter.ts @@ -1,8 +1,11 @@ import * as Limiter from 'ratelimiter'; +import * as debug from 'debug'; import limiterDB from '../db/redis'; import { IEndpoint } from './endpoints'; import { IAuthContext } from './authenticate'; +const log = debug('misskey:limitter'); + export default (endpoint: IEndpoint, ctx: IAuthContext) => new Promise((ok, reject) => { const limitKey = endpoint.hasOwnProperty('limitKey') ? endpoint.limitKey @@ -24,7 +27,7 @@ export default (endpoint: IEndpoint, ctx: IAuthContext) => new Promise((ok, reje } // Short-term limit - function min(): void { + function min() { const minIntervalLimiter = new Limiter({ id: `${ctx.user._id}:${limitKey}:min`, duration: endpoint.minInterval, @@ -32,10 +35,14 @@ export default (endpoint: IEndpoint, ctx: IAuthContext) => new Promise((ok, reje db: limiterDB }); - minIntervalLimiter.get((limitErr, limit) => { - if (limitErr) { - reject('ERR'); - } else if (limit.remaining === 0) { + minIntervalLimiter.get((err, info) => { + if (err) { + return reject('ERR'); + } + + log(`min remaining: ${info.remaining}`); + + if (info.remaining === 0) { reject('BRIEF_REQUEST_INTERVAL'); } else { if (hasRateLimit) { @@ -48,7 +55,7 @@ export default (endpoint: IEndpoint, ctx: IAuthContext) => new Promise((ok, reje } // Long term limit - function max(): void { + function max() { const limiter = new Limiter({ id: `${ctx.user._id}:${limitKey}`, duration: endpoint.limitDuration, @@ -56,10 +63,14 @@ export default (endpoint: IEndpoint, ctx: IAuthContext) => new Promise((ok, reje db: limiterDB }); - limiter.get((limitErr, limit) => { - if (limitErr) { - reject('ERR'); - } else if (limit.remaining === 0) { + limiter.get((err, info) => { + if (err) { + return reject('ERR'); + } + + log(`max remaining: ${info.remaining}`); + + if (info.remaining === 0) { reject('RATE_LIMIT_EXCEEDED'); } else { ok(); |