server_photo_s85js/utils/shareTokens.js
2026-08-11 08:45:04 +02:00

36 lines
910 B
JavaScript

const { v4: uuidv4 } = require('uuid');
const shareTokens = new Map();
const SHARE_CLEANUP_INTERVAL_MS = 60 * 1000;
function createShareRecord(entryId, filePath, ttlSeconds = 300, oneTime = false, owner = null) {
const token = uuidv4();
const expiresAt = Date.now() + ttlSeconds * 1000;
shareTokens.set(token, { entryId, filePath, expiresAt, oneTime, owner });
return { token, expiresAt };
}
function getShareRecord(token) {
const rec = shareTokens.get(token);
if (!rec) return null;
if (rec.expiresAt <= Date.now()) {
shareTokens.delete(token);
return null;
}
return rec;
}
function cleanupShareTokens() {
const now = Date.now();
for (const [t, rec] of shareTokens.entries()) {
if (rec.expiresAt <= now) shareTokens.delete(t);
}
}
setInterval(cleanupShareTokens, SHARE_CLEANUP_INTERVAL_MS);
module.exports = {
createShareRecord,
getShareRecord,
shareTokens,
};