From 7ba88939b983fb129e406cd263b525af4c6324f6 Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Mon, 29 Sep 2025 21:49:15 -0600 Subject: [PATCH] Add openBlocks API --- index.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/index.js b/index.js index 88f3078..99339d9 100644 --- a/index.js +++ b/index.js @@ -612,6 +612,39 @@ app.get("/api/v1/directory", (req, res) => { }); }); +// Function to find open number blocks +app.get("/api/v1/directory/openBlocks", (req, res) => { + const invalidBlocks = [ + // Emergency number prefixes (112, 911, 999, 110, 117, 119, 113, 191, 111) + 1120000, 9110000, 9990000, 1100000, 1170000, 1190000, 1130000, 1910000, 1110000 + ] + pool.query("SELECT block_start, block_length FROM routes").then((rows) => { + const takenBlocks = rows.map(row => { + return { start: row.block_start, end: row.block_start + row.block_length }; + }); + const openBlocks = []; + for (let i = 100000; i <= 9999999; i += 10000) { + const blockStart = i; + const blockEnd = i + 9999; + // Check if block is invalid + if (invalidBlocks.includes(blockStart)) { + continue; + } + // Check if block overlaps with any taken blocks + const overlap = takenBlocks.some(taken => { + return (blockStart <= taken.end && blockEnd >= taken.start); + }); + if (!overlap) { + openBlocks.push(blockStart); + } + } + res.json(openBlocks); + }).catch(err => { + console.error('Error getting open blocks:', err); + res.status(500).json({ error: 'Internal server error' }); + }); +}); + // Other public endpoints that need special handling discordInviteCache = { time: 0, url: "" };