v3 adapt v2: adapt common ops

This commit is contained in:
Matteo Pagliazzi
2016-04-09 16:45:43 +02:00
parent 910ea836ba
commit 6b2d1a1416
28 changed files with 202 additions and 72 deletions

View File

@@ -15,8 +15,12 @@ module.exports = function addWebhook (user, req = {}) {
user.markModified('preferences.webhooks'); user.markModified('preferences.webhooks');
return refPush(wh, { if (req.v2 === true) {
url: req.body.url, return user.preferences.webhooks;
enabled: req.body.enabled, } else {
}); return refPush(wh, {
url: req.body.url,
enabled: req.body.enabled,
});
}
}; };

View File

@@ -1,10 +1,15 @@
import _ from 'lodash'; import _ from 'lodash';
import autoAllocate from '../fns/autoAllocate'; import autoAllocate from '../fns/autoAllocate';
module.exports = function allocateNow (user) { module.exports = function allocateNow (user, req = {}) {
_.times(user.stats.points, () => autoAllocate(user)); _.times(user.stats.points, () => autoAllocate(user));
user.stats.points = 0; user.stats.points = 0;
return {
data: _.pick(user, 'stats'), if (req.v2 === true) {
}; return _.pick(user, 'stats');
} else {
return {
data: _.pick(user, 'stats'),
};
}
}; };

View File

@@ -134,5 +134,9 @@ module.exports = function buy (user, req = {}, analytics) {
if (armoireResp) res.armoire = armoireResp; if (armoireResp) res.armoire = armoireResp;
return res; if (req.v2 === true) {
return res.data;
} else {
return res;
}
}; };

View File

@@ -43,8 +43,13 @@ module.exports = function buyMysterySet (user, req = {}, analytics) {
user.purchased.plan.consecutive.trinkets--; user.purchased.plan.consecutive.trinkets--;
return {
data: pickDeep(user, splitWhitespace('items purchased.plan.consecutive')), if (req.v2 === true) {
message: i18n.t('hourglassPurchaseSet', req.language), return pickDeep(user, splitWhitespace('items purchased.plan.consecutive'));
}; } else {
return {
data: pickDeep(user, splitWhitespace('items purchased.plan.consecutive')),
message: i18n.t('hourglassPurchaseSet', req.language),
};
}
}; };

View File

@@ -37,10 +37,14 @@ module.exports = function buyQuest (user, req = {}, analytics) {
}); });
} }
return { if (req.v2 === true) {
data: user.items.quests, return user.items.quests;
message: i18n.t('messageBought', { } else {
itemText: item.text(req.language), return {
}, req.language), data: user.items.quests,
}; message: i18n.t('messageBought', {
itemText: item.text(req.language),
}, req.language),
};
}
}; };

View File

@@ -22,10 +22,14 @@ module.exports = function buySpecialSpell (user, req = {}) {
user.items.special[key]++; user.items.special[key]++;
return { if (req.v2 === true) {
data: _.pick(user, splitWhitespace('items stats')), return _.pick(user, splitWhitespace('items stats'));
message: i18n.t('messageBought', { } else {
itemText: item.text(req.language), return {
}, req.language), data: _.pick(user, splitWhitespace('items stats')),
}; message: i18n.t('messageBought', {
itemText: item.text(req.language),
}, req.language),
};
}
}; };

View File

@@ -65,7 +65,11 @@ module.exports = function changeClass (user, req = {}, analytics) {
user.flags.classSelected = false; user.flags.classSelected = false;
} }
return { if (req.v2 === true) {
data: _.pick(user, splitWhitespace('stats flags items preferences')), return _.pick(user, splitWhitespace('stats flags items preferences'));
}; } else {
return {
data: _.pick(user, splitWhitespace('stats flags items preferences')),
};
}
}; };

View File

@@ -3,4 +3,6 @@ import _ from 'lodash';
module.exports = function deleteWebhook (user, req) { module.exports = function deleteWebhook (user, req) {
delete user.preferences.webhooks[_.get(req, 'params.id')]; delete user.preferences.webhooks[_.get(req, 'params.id')];
user.markModified('preferences.webhooks'); user.markModified('preferences.webhooks');
return user.preferences.webhooks;
}; };

View File

@@ -2,7 +2,7 @@ import splitWhitespace from '../libs/splitWhitespace';
import { capByLevel } from '../statHelpers'; import { capByLevel } from '../statHelpers';
import _ from 'lodash'; import _ from 'lodash';
module.exports = function disableClasses (user) { module.exports = function disableClasses (user, req = {}) {
user.stats.class = 'warrior'; user.stats.class = 'warrior';
user.flags.classSelected = true; user.flags.classSelected = true;
user.preferences.disableClasses = true; user.preferences.disableClasses = true;
@@ -10,7 +10,11 @@ module.exports = function disableClasses (user) {
user.stats.str = capByLevel(user.stats.lvl); user.stats.str = capByLevel(user.stats.lvl);
user.stats.points = 0; user.stats.points = 0;
return { if (req.v2 === true) {
data: _.pick(user, splitWhitespace('stats flags preferences')), return _.pick(user, splitWhitespace('stats flags preferences'));
}; } else {
return {
data: _.pick(user, splitWhitespace('stats flags preferences')),
};
}
}; };

View File

@@ -62,5 +62,9 @@ module.exports = function equip (user, req = {}) {
}; };
if (message) res.message = message; if (message) res.message = message;
return res; if (req.v2 === true) {
return user.items;
} else {
return res;
}
}; };

View File

@@ -89,8 +89,14 @@ module.exports = function feed (user, req = {}) {
user.items.food[food.key]--; user.items.food[food.key]--;
return { if (req.v2 === true) {
data: userPets[pet], return {
message, value: userPets[pet],
}; };
} else {
return {
data: userPets[pet],
message,
};
}
}; };

View File

@@ -33,8 +33,12 @@ module.exports = function hatch (user, req = {}) {
user.items.eggs[egg]--; user.items.eggs[egg]--;
user.items.hatchingPotions[hatchingPotion]--; user.items.hatchingPotions[hatchingPotion]--;
return { if (req.v2 === true) {
message: i18n.t('messageHatched', req.language), return user.items;
data: user.items, } else {
}; return {
message: i18n.t('messageHatched', req.language),
data: user.items,
};
}
}; };

View File

@@ -56,5 +56,9 @@ module.exports = function purchaseHourglass (user, req = {}, analytics) {
message: i18n.t('hourglassPurchase', req.language), message: i18n.t('hourglassPurchase', req.language),
}; };
return res; if (req.v2 === true) {
return res.data;
} else {
return res;
}
}; };

View File

@@ -33,8 +33,12 @@ module.exports = function openMysteryItem (user, req = {}, analytics) {
user._tmp.drop = item; user._tmp.drop = item;
} }
return { if (req.v2 === true) {
message: i18n.t('mysteryItemOpened', req.language), return user.items.gear.owned;
data: user.items.gear.owned, } else {
}; return {
message: i18n.t('mysteryItemOpened', req.language),
data: user.items.gear.owned,
};
}
}; };

View File

@@ -124,5 +124,9 @@ module.exports = function purchase (user, req = {}, analytics) {
message: i18n.t('purchased', {type, key}), message: i18n.t('purchased', {type, key}),
}; };
return response; if (req.v2 === true) {
return response.data;
} else {
return response;
}
}; };

View File

@@ -21,8 +21,12 @@ module.exports = function readCard (user, req = {}) {
user.items.special[`${cardType}Received`].shift(); user.items.special[`${cardType}Received`].shift();
user.flags.cardReceived = false; user.flags.cardReceived = false;
return { if (req.v2 === true) {
message: i18n.t('readCard', {cardType}, req.language), return _.pick(user, splitWhitespace('items.special flags.cardReceived'));
data: _.pick(user, splitWhitespace('items.special flags.cardReceived')), } else {
}; return {
message: i18n.t('readCard', {cardType}, req.language),
data: _.pick(user, splitWhitespace('items.special flags.cardReceived')),
};
}
}; };

View File

@@ -103,5 +103,9 @@ module.exports = function rebirth (user, tasks = [], req = {}, analytics) {
message: i18n.t('rebirthComplete'), message: i18n.t('rebirthComplete'),
}; };
return response; if (req.v2 === true) {
return user;
} else {
return response;
}
}; };

View File

@@ -62,5 +62,9 @@ module.exports = function releaseBoth (user, req = {}, analytics) {
message: i18n.t('mountsAndPetsReleased'), message: i18n.t('mountsAndPetsReleased'),
}; };
return response; if (req.v2 === true) {
return user;
} else {
return response;
}
}; };

View File

@@ -39,5 +39,9 @@ module.exports = function releaseMounts (user, req = {}, analytics) {
message: i18n.t('mountsReleased'), message: i18n.t('mountsReleased'),
}; };
return response; if (req.v2 === true) {
return user;
} else {
return response;
}
}; };

View File

@@ -37,5 +37,9 @@ module.exports = function releasePets (user, req = {}, analytics) {
message: i18n.t('petsReleased'), message: i18n.t('petsReleased'),
}; };
return response; if (req.v2 === true) {
return user;
} else {
return response;
}
}; };

View File

@@ -32,5 +32,9 @@ module.exports = function reroll (user, tasks = [], req = {}, analytics) {
message: i18n.t('rerollComplete'), message: i18n.t('rerollComplete'),
}; };
return response; if (req.v2 === true) {
return user;
} else {
return response;
}
}; };

View File

@@ -102,5 +102,9 @@ module.exports = function revive (user, req = {}, analytics) {
message, message,
}; };
return response; if (req.v2 === true) {
return user;
} else {
return response;
}
}; };

View File

@@ -38,5 +38,9 @@ module.exports = function sell (user, req = {}) {
message: i18n.t('sold', {type, key}), message: i18n.t('sold', {type, key}),
}; };
return response; if (req.v2 === true) {
return response.data;
} else {
return response;
}
}; };

View File

@@ -1,8 +1,13 @@
module.exports = function sleep (user) { module.exports = function sleep (user, req = {}) {
user.preferences.sleep = !user.preferences.sleep; user.preferences.sleep = !user.preferences.sleep;
return {
preferences: { if (req.v2 === true) {
sleep: user.preferences.sleep, return {};
}, } else {
}; return {
preferences: {
sleep: user.preferences.sleep,
},
};
}
}; };

View File

@@ -81,5 +81,9 @@ module.exports = function unlock (user, req = {}, analytics) {
message: i18n.t('unlocked'), message: i18n.t('unlocked'),
}; };
return response; if (req.v2 === true) {
return response.data;
} else {
return response;
}
}; };

View File

@@ -12,5 +12,9 @@ module.exports = function updateWebhook (user, req) {
user.preferences.webhooks[req.params.id].url = req.body.url; user.preferences.webhooks[req.params.id].url = req.body.url;
user.preferences.webhooks[req.params.id].enabled = req.body.enabled; user.preferences.webhooks[req.params.id].enabled = req.body.enabled;
return user.preferences.webhooks[req.params.id]; if (req.v2 === true) {
return user.preferences.webhooks;
} else {
return user.preferences.webhooks[req.params.id];
}
}; };

View File

@@ -13,8 +13,9 @@ describe('shared.ops.deleteWebhook', () => {
}); });
it('succeeds', () => { it('succeeds', () => {
user.preferences.webhooks = { 'some-id': {} }; user.preferences.webhooks = { 'some-id': {}, 'another-id': {} };
deleteWebhook(user, req); let res = deleteWebhook(user, req);
expect(user.preferences.webhooks).to.eql({}); expect(user.preferences.webhooks).to.eql({'another-id': {}});
expect(res).to.equal(user.preferences.webhooks);
}); });
}); });

View File

@@ -24,6 +24,7 @@ var moment = require('moment');
var logging = require('./../../libs/api-v2/logging'); var logging = require('./../../libs/api-v2/logging');
var acceptablePUTPaths; var acceptablePUTPaths;
let restrictedPUTSubPaths; let restrictedPUTSubPaths;
import v3UserController from '../api-v3/user';
let i18n = shared.i18n; let i18n = shared.i18n;
@@ -865,10 +866,24 @@ api.addTask = function(req, res, next) {
* All other user.ops which can easily be mapped to common/script/index.js, not requiring custom API-wrapping * All other user.ops which can easily be mapped to common/script/index.js, not requiring custom API-wrapping
*/ */
_.each(shared.ops, function(op,k){ _.each(shared.ops, function(op,k){
if (!api[k]) { if (['rebirth', 'reroll', 'reset'].indexOf(k) !== -1) { // proxy ops that change tasks directly to v3
if (k === 'rebirth') k = 'userRebirth'; // the name is different in v3
if (k === 'reroll') k = 'userReroll';
// if (k === 'reset') k = 'resetUser';
api[k] = async function (req, res, next) {
try {
req.v2 = true;
await v3UserController[k](req, res, next);
} catch (err) {
next(err);
}
}
} else if (!api[k]) {
api[k] = function(req, res, next) { api[k] = function(req, res, next) {
var opResponse; var opResponse;
try { try {
req.v2 = true; // Used to indicate to the shared code that the old response data should be returned
opResponse = shared.ops[k](res.locals.user, req, analytics); opResponse = shared.ops[k](res.locals.user, req, analytics);
} catch (err) { } catch (err) {
if (!err.code) return next(err); if (!err.code) return next(err);
@@ -878,8 +893,15 @@ _.each(shared.ops, function(op,k){
// If we want to send something other than 500, pass err as {code: 200, message: "Not enough GP"} // If we want to send something other than 500, pass err as {code: 200, message: "Not enough GP"}
res.locals.user.save(function(err){ res.locals.user.save(function(err){
if (err) return next(err); if (err) return next(err);
res.status(200).json(response); if (response === user) { // add tasks
}) user.getTransformedData(function (err, transformedUser) {
if (err) return next(err);
res.status(200).json(transformedUser);
});
} else {
res.status(200).json(response);
}
});
} }
} }
}) })