From c97cc82817428c92152c99e9528ebe648fce08e9 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Thu, 19 Apr 2018 19:04:20 +0200 Subject: [PATCH] Only fetch wiki changes since last processing --- integrations/mediawiki.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/integrations/mediawiki.js b/integrations/mediawiki.js index a755b64..77723b4 100644 --- a/integrations/mediawiki.js +++ b/integrations/mediawiki.js @@ -65,6 +65,12 @@ module.exports = async function(robot, kredits) { 'rcprop=ids|title|timestamp|user|sizes|comment|flags' ]; + let endTime = robot.brain.get('kredits:mediawiki:last_processed_at'); + if (endTime) { + robot.logger.debug(`[hubot-kredits] Fetching wiki edits since ${endTime}`); + params.push(`rcend=${endTime}`); + } + const url = `${apiURL}?${params.join('&')}`; return fetch(url).then(res => { @@ -83,7 +89,7 @@ module.exports = async function(robot, kredits) { } function groupChangesByUser (changes) { - return groupArray(changes, 'user'); + return Promise.resolve(groupArray(changes, 'user')); } function analyzeUserChanges (user, changes) { @@ -154,8 +160,14 @@ module.exports = async function(robot, kredits) { return createProposal(user, amount, desc, url, details); } + function updateTimestampForNextFetch () { + robot.logger.debug(`[hubot-kredits] Set timestamp for wiki changes fetch`); + robot.brain.set('kredits:mediawiki:last_processed_at', new Date().toISOString()); + } + fetchChanges() .then(res => groupChangesByUser(res)) - .then(res => createProposals(res)); + .then(res => createProposals(res)) + .then(() => updateTimestampForNextFetch()); };