feat: track incoming requests by id, analytics increment for some metrics, ignore repeated requests by id

closes #12574
This commit is contained in:
Julian Lam
2024-05-14 12:06:59 -04:00
parent b106a6a018
commit 4e9cd8efc0
5 changed files with 185 additions and 10 deletions

View File

@@ -13,6 +13,7 @@ const ttl = require('../cache/ttl');
const lru = require('../cache/lru');
const batch = require('../batch');
const pubsub = require('../pubsub');
const analytics = require('../analytics');
const requestCache = ttl({ ttl: 1000 * 60 * 5 }); // 5 minutes
const ActivityPub = module.exports;
@@ -322,3 +323,14 @@ ActivityPub.send = async (type, id, targets, payload) => {
},
);
};
ActivityPub.record = async ({ id, type, actor }) => {
const now = Date.now();
const { hostname } = new URL(actor);
await Promise.all([
db.sortedSetAdd(`activities:datetime`, now, id),
db.sortedSetAdd('domains:lastSeen', now, hostname),
analytics.increment(['activities', `activities:byType:${type}`, `activities:byHost:${hostname}`]),
]);
};