Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import rateLimit from "express-rate-limit";
import RedisStore from "rate-limit-redis";
import { Redis } from "./redis";
const REDIS_PREFIX = process.env.REDIS_RATELIMIT_PREFIX || "canavs_ratelimit:";
export const RateLimiter = {
ADMIN: rateLimit({
windowMs: 15 * 60 * 1000,
max: 15,
standardHeaders: true,
legacyHeaders: false,
skipSuccessfulRequests: true,
store: new RedisStore({
prefix: REDIS_PREFIX + "admin:",
sendCommand: async (...args: string[]) => {
const client = await Redis.getClient();
return await client.sendCommand(args);
},
}),
}),
HIGH: rateLimit({
windowMs: 15 * 60 * 1000,
max: 50,
standardHeaders: true,
legacyHeaders: false,
store: new RedisStore({
prefix: REDIS_PREFIX + "high:",
sendCommand: async (...args: string[]) => {
const client = await Redis.getClient();
return await client.sendCommand(args);
},
}),
}),
};