Add openBlocks API

This commit is contained in:
Christopher Cookman 2025-09-29 21:49:15 -06:00
parent 7d1a75b0fb
commit 7ba88939b9

View file

@ -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: "" };