summaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-01-23 18:25:52 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-01-23 18:25:52 +0900
commit585b8eec2333c0afe90dcd3ee8ff084c566a8785 (patch)
treef62d4668be558916ed0380a5d9e1c6e93b75d807 /src/api
parent[Client] Display age (diff)
downloadsharkey-585b8eec2333c0afe90dcd3ee8ff084c566a8785.tar.gz
sharkey-585b8eec2333c0afe90dcd3ee8ff084c566a8785.tar.bz2
sharkey-585b8eec2333c0afe90dcd3ee8ff084c566a8785.zip
Use debug
Diffstat (limited to 'src/api')
-rw-r--r--src/api/limitter.ts31
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();