Skip to content

Commit

Permalink
morebits: Replace intoken/edittoken with csrftoken obtained via meta=…
Browse files Browse the repository at this point in the history
…tokens

Deprecated ages ago (see https://www.mediawiki.org/wiki/MediaWiki_1.24#API_changes and https://gerrit.wikimedia.org/r/#/c/mediawiki/core/+/153110/).  Closes wikimedia-gadgets#615.

Use `curtimestamp` on `.load` calls now that we no longer use `intoken`.  As noted in wikimedia-gadgets#741, `starttimestamp` was only available because we were still using the outdated `intoken` method.  With that gone, we need to explicitly provide `query.curtimestamp`, thus replicating the loading timestamp that we can feed it into `starttimestamp` and avoid edit conflicts.  Also replaced `intoken` in `twinklefluff.js` and removed the undelete kludge from wikimedia-gadgets#616.  Some references to token names in error messages are kept for ease of debugging.
  • Loading branch information
Amorymeltzer committed Mar 14, 2020
1 parent 065b059 commit e2cf8ef
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 71 deletions.
30 changes: 17 additions & 13 deletions modules/twinklefluff.js
Expand Up @@ -241,7 +241,9 @@ Twinkle.fluff.revert = function revertPage(type, vandal, autoRevert, rev, page)
'titles': pagename,
'rvlimit': 50, // intentionally limited
'rvprop': [ 'ids', 'timestamp', 'user', 'comment' ],
'intoken': 'edit'
'curtimestamp': '',
'meta': 'tokens',
'type': 'csrf'
};
var wikipedia_api = new Morebits.wiki.api('Grabbing data of earlier revisions', query, Twinkle.fluff.callbacks.main);
wikipedia_api.params = params;
Expand All @@ -259,8 +261,10 @@ Twinkle.fluff.revertToRevision = function revertToRevision(oldrev) {
'rvlimit': 1,
'rvstartid': oldrev,
'rvprop': [ 'ids', 'timestamp', 'user', 'comment' ],
'intoken': 'edit',
'format': 'xml'
'format': 'xml',
'curtimestamp': '',
'meta': 'tokens',
'type': 'csrf'
};
var wikipedia_api = new Morebits.wiki.api('Grabbing data of the earlier revision', query, Twinkle.fluff.callbacks.toRevision.main);
wikipedia_api.params = { rev: oldrev };
Expand All @@ -278,8 +282,8 @@ Twinkle.fluff.callbacks = {

var lastrevid = parseInt($(xmlDoc).find('page').attr('lastrevid'), 10);
var touched = $(xmlDoc).find('page').attr('touched');
var starttimestamp = $(xmlDoc).find('page').attr('starttimestamp');
var edittoken = $(xmlDoc).find('page').attr('edittoken');
var loadtimestamp = $(xmlDoc).find('api').attr('curtimestamp');
var csrftoken = $(xmlDoc).find('tokens').attr('csrftoken');
var revertToRevID = $(xmlDoc).find('rev').attr('revid');
var revertToUser = $(xmlDoc).find('rev').attr('user');

Expand All @@ -299,11 +303,11 @@ Twinkle.fluff.callbacks = {
'action': 'edit',
'title': mw.config.get('wgPageName'),
'summary': summary,
'token': edittoken,
'token': csrftoken,
'undo': lastrevid,
'undoafter': revertToRevID,
'basetimestamp': touched,
'starttimestamp': starttimestamp,
'starttimestamp': loadtimestamp,
'watchlist': Twinkle.getPref('watchRevertedPages').indexOf('torev') !== -1 ? 'watch' : undefined,
'minor': Twinkle.getPref('markRevertedPagesAsMinor').indexOf('torev') !== -1 ? true : undefined
};
Expand All @@ -322,8 +326,8 @@ Twinkle.fluff.callbacks = {

var lastrevid = parseInt($(xmlDoc).find('page').attr('lastrevid'), 10);
var touched = $(xmlDoc).find('page').attr('touched');
var starttimestamp = $(xmlDoc).find('page').attr('starttimestamp');
var edittoken = $(xmlDoc).find('page').attr('edittoken');
var loadtimestamp = $(xmlDoc).find('api').attr('curtimestamp');
var csrftoken = $(xmlDoc).find('tokens').attr('csrftoken');
var lastuser = $(xmlDoc).find('rev').attr('user');

var revs = $(xmlDoc).find('rev');
Expand Down Expand Up @@ -510,18 +514,18 @@ Twinkle.fluff.callbacks = {
$flagged.attr('stable_revid') >= self.params.goodid &&
$flagged.attr('pending_since')) {
self.params.reviewRevert = true;
self.params.edittoken = edittoken;
self.params.csrftoken = csrftoken;
}

query = {
'action': 'edit',
'title': self.params.pagename,
'summary': summary,
'token': edittoken,
'token': csrftoken,
'undo': lastrevid,
'undoafter': self.params.goodid,
'basetimestamp': touched,
'starttimestamp': starttimestamp,
'starttimestamp': loadtimestamp,
'watchlist': Twinkle.getPref('watchRevertedPages').indexOf(self.params.type) !== -1 ? 'watch' : undefined,
'minor': Twinkle.getPref('markRevertedPagesAsMinor').indexOf(self.params.type) !== -1 ? true : undefined
};
Expand Down Expand Up @@ -551,7 +555,7 @@ Twinkle.fluff.callbacks = {
var query = {
'action': 'review',
'revid': $edit.attr('newrevid'),
'token': apiobj.params.edittoken,
'token': apiobj.params.csrftoken,
'comment': Twinkle.getPref('summaryAd').trim()
};
var wikipedia_api = new Morebits.wiki.api('Automatically accepting your changes', query);
Expand Down

0 comments on commit e2cf8ef

Please sign in to comment.