This commit is contained in:
Kaushik Narayan R 2024-12-29 00:46:43 -07:00
parent 79060661a6
commit 714734c77a
4 changed files with 24 additions and 4 deletions

View File

@ -1,9 +1,10 @@
const axios = require("axios"); const axios = require("axios");
const rateLimit = require("axios-rate-limit");
const { baseAPIURL, accountsAPIURL } = require("../constants"); const { baseAPIURL, accountsAPIURL } = require("../constants");
const logger = require("../utils/logger")(module); const logger = require("../utils/logger")(module);
const authInstance = axios.default.create({ const authInstance = axios.create({
baseURL: accountsAPIURL, baseURL: accountsAPIURL,
timeout: 20000, timeout: 20000,
headers: { headers: {
@ -12,7 +13,7 @@ const authInstance = axios.default.create({
}, },
}); });
const axiosInstance = axios.default.create({ const uncappedAxiosInstance = axios.create({
baseURL: baseAPIURL, baseURL: baseAPIURL,
timeout: 20000, timeout: 20000,
headers: { headers: {
@ -20,6 +21,11 @@ const axiosInstance = axios.default.create({
}, },
}); });
const axiosInstance = rateLimit(uncappedAxiosInstance, {
maxRequests: 10,
perMilliseconds: 5000,
});
axiosInstance.interceptors.request.use(config => { axiosInstance.interceptors.request.use(config => {
logger.http("API call", { logger.http("API call", {
url: config.url, url: config.url,

View File

@ -148,7 +148,8 @@ const logout = async (req, res) => {
return; return;
} else { } else {
res.clearCookie(sessionName); res.clearCookie(sessionName);
res.sendStatus(200); // res.sendStatus(200);
res.redirect(process.env.APP_URI + "?logout=success");
logger.debug("Logged out.", { sessionID: delSession.id }); logger.debug("Logged out.", { sessionID: delSession.id });
return; return;
} }

12
package-lock.json generated
View File

@ -10,6 +10,7 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"axios": "^1.7.9", "axios": "^1.7.9",
"axios-rate-limit": "^1.4.0",
"connect-sqlite3": "^0.9.15", "connect-sqlite3": "^0.9.15",
"cookie-parser": "^1.4.7", "cookie-parser": "^1.4.7",
"cors": "^2.8.5", "cors": "^2.8.5",
@ -413,6 +414,17 @@
"proxy-from-env": "^1.1.0" "proxy-from-env": "^1.1.0"
} }
}, },
"node_modules/axios-rate-limit": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/axios-rate-limit/-/axios-rate-limit-1.4.0.tgz",
"integrity": "sha512-uM5PbmSUdSle1I+59Av/wpLuNRobfatIR+FyylSoHcVHT20ohjflNnLMEHZQr7N2QVG/Wlt8jekIPhWwoKtpXQ==",
"dependencies": {
"axios": ">=0.18.0"
},
"peerDependencies": {
"axios": "*"
}
},
"node_modules/balanced-match": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",

View File

@ -21,6 +21,7 @@
"homepage": "https://github.com/20kaushik02/spotify-manager#readme", "homepage": "https://github.com/20kaushik02/spotify-manager#readme",
"dependencies": { "dependencies": {
"axios": "^1.7.9", "axios": "^1.7.9",
"axios-rate-limit": "^1.4.0",
"connect-sqlite3": "^0.9.15", "connect-sqlite3": "^0.9.15",
"cookie-parser": "^1.4.7", "cookie-parser": "^1.4.7",
"cors": "^2.8.5", "cors": "^2.8.5",
@ -29,8 +30,8 @@
"express-session": "^1.18.1", "express-session": "^1.18.1",
"express-validator": "^7.2.0", "express-validator": "^7.2.0",
"helmet": "^8.0.0", "helmet": "^8.0.0",
"sequelize": "^6.37.5",
"pg": "^8.13.1", "pg": "^8.13.1",
"sequelize": "^6.37.5",
"serializr": "^3.0.3", "serializr": "^3.0.3",
"winston": "^3.17.0" "winston": "^3.17.0"
}, },