diff --git a/.gitignore b/.gitignore index 0dc171dd..ed596966 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ build */.DS_Store src/models/globalBadWordsList.json src/config/overrides.js +src/config/overrides.js diff --git a/src/config/index.js b/src/config/index.js index dcbe087c..bd91f4ef 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -14,6 +14,7 @@ const defaults = { sendGrid: "", sendMail: "", enableEmailAlerts: true, + maxServersPerPage: 50, urlPrefix: "https://remo.tv/", supportEmail: "jill@remo.tv", diff --git a/src/modules/utilities.js b/src/modules/utilities.js index 3c902a99..a2669158 100644 --- a/src/modules/utilities.js +++ b/src/modules/utilities.js @@ -37,6 +37,16 @@ module.exports.createTimeStamp = () => { return Date.now(); }; +module.exports.splitToChunks = (arr, chunkSize, acc = []) => ( + arr.length > chunkSize ? + this.splitToChunks( + arr.slice(chunkSize), + chunkSize, + [...acc, arr.slice(0, chunkSize)] + ) : + [...acc, arr] +); + module.exports.createTimer = (interval, callback, object) => { // console.log("DING"); const timer = new setInterval(() => { diff --git a/src/routes/api/robotServer.js b/src/routes/api/robotServer.js index 27d70827..1090e9a9 100644 --- a/src/routes/api/robotServer.js +++ b/src/routes/api/robotServer.js @@ -13,7 +13,15 @@ const { jsonError, logger } = require("../../modules/logging"); //LIST ACTIVE SERVERS router.get("/list", async (req, res) => { const { getPublicServers } = require("../../controllers/robotServer"); + const { maxServersPerPage } = require("../../config") + const { splitToChunks } = require("../../modules/utilities") let display = await getPublicServers(); + if ((typeof req.query.page !== 'undefined') /*if the page param is included in the query*/ && (!isNaN(+req.query.page)) /*check if it is a number*/ && (Number.isInteger(+req.query.page)) /*check if it is whole (page 2.4 isn't possible)*/) { + let pageNum = +req.query.page; + display = splitToChunks(display, maxServersPerPage)[pageNum-1] + } else { + //allow for some time before depreciation of not using page param + } res.send(display); });