mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: add TTL cache for Actors.assert
This commit is contained in:
@@ -5,6 +5,9 @@ const winston = require('winston');
|
||||
const db = require('../database');
|
||||
const user = require('../user');
|
||||
const utils = require('../utils');
|
||||
const TTLCache = require('../cache/ttl');
|
||||
|
||||
const failedWebfingerCache = TTLCache({ ttl: 1000 * 60 * 10 }); // 10 minutes
|
||||
|
||||
const activitypub = module.parent.exports;
|
||||
|
||||
@@ -17,14 +20,17 @@ Actors.assert = async (ids, options = {}) => {
|
||||
}
|
||||
|
||||
// Filter out uids if passed in
|
||||
ids = ids.filter(id => !utils.isNumber(id));
|
||||
ids = ids.filter(id => !utils.isNumber(id) && !failedWebfingerCache.has(id));
|
||||
|
||||
// Translate webfinger handles to uris
|
||||
ids = await Promise.all(ids.map(async (id) => {
|
||||
const originalId = id;
|
||||
if (id.includes('@')) {
|
||||
({ actorUri: id } = await activitypub.helpers.query(id));
|
||||
}
|
||||
|
||||
if (!id) {
|
||||
failedWebfingerCache.set(originalId, true);
|
||||
}
|
||||
return id;
|
||||
}));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user