const fs = require('fs');
const zlib = require('zlib');
/**
* Decodes a file input for an isolated environment with rate limiting.
*
* @param {Buffer} fileData The file data as a Buffer.
* @param {number} rateLimitMs The rate limit in milliseconds.
* @returns {Promise<string>} A promise that resolves with the decoded string,
* or rejects with an error.
*/
async function decodeFile(fileData, rateLimitMs) {
return new Promise((resolve, reject) => {
// Rate limiting implementation
let lastRequestTime = 0;
const checkRateLimit = () => {
const now = Date.now();
if (now - lastRequestTime >= rateLimitMs) {
lastRequestTime = now;
} else {
setTimeout(checkRateLimit, 10); // Check again later
}
};
checkRateLimit();
// Decode the file data
zlib.gunzip(fileData, (err, buffer) => {
if (err) {
reject(err);
return;
}
try {
const decodedString = buffer.toString('utf8');
resolve(decodedString);
} catch (decodeError) {
reject(decodeError);
}
});
});
}
module.exports = decodeFile;
Add your comment