Update middleware/midware.js
Browse files- middleware/midware.js +8 -2
middleware/midware.js
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
import { Database } from '../database/database.js';
|
2 |
import { rateLimit } from 'express-rate-limit';
|
|
|
|
|
3 |
|
4 |
const authenticateApiKey = async (req, res, next) => {
|
5 |
const apiKey = req.headers['x-api-key'];
|
@@ -21,13 +23,17 @@ const authenticateApiKey = async (req, res, next) => {
|
|
21 |
};
|
22 |
|
23 |
const apiLimiter = rateLimit({
|
24 |
-
|
|
|
|
|
|
|
|
|
25 |
max: 3,
|
26 |
keyGenerator: (req) => req.headers["x-api-key"],
|
27 |
standardHeaders: true,
|
28 |
legacyHeaders: false,
|
29 |
message: (req, res) => {
|
30 |
-
const retryAfterMs = res.getHeaders()["retry-after"] * 1000 ||
|
31 |
const remainingSeconds = Math.ceil(retryAfterMs / 1000);
|
32 |
const remainingMinutes = Math.floor(remainingSeconds / 60);
|
33 |
return {
|
|
|
1 |
import { Database } from '../database/database.js';
|
2 |
import { rateLimit } from 'express-rate-limit';
|
3 |
+
import { MongoStore } from "rate-limit-mongo";
|
4 |
+
import { dbUri } from '/..config.js';
|
5 |
|
6 |
const authenticateApiKey = async (req, res, next) => {
|
7 |
const apiKey = req.headers['x-api-key'];
|
|
|
23 |
};
|
24 |
|
25 |
const apiLimiter = rateLimit({
|
26 |
+
store: new MongoStore({
|
27 |
+
uri: dbUri,
|
28 |
+
collectionName: "rateLimits",
|
29 |
+
}),
|
30 |
+
windowMs: 2 * 60 * 1000,
|
31 |
max: 3,
|
32 |
keyGenerator: (req) => req.headers["x-api-key"],
|
33 |
standardHeaders: true,
|
34 |
legacyHeaders: false,
|
35 |
message: (req, res) => {
|
36 |
+
const retryAfterMs = res.getHeaders()["retry-after"] * 1000 || 2 * 60 * 1000;
|
37 |
const remainingSeconds = Math.ceil(retryAfterMs / 1000);
|
38 |
const remainingMinutes = Math.floor(remainingSeconds / 60);
|
39 |
return {
|