res.respond: allow for thrid parameter (message), refactor shared ops responses and adapt tests

This commit is contained in:
Matteo Pagliazzi
2016-04-21 00:52:03 +02:00
parent 9e3d8ba4ac
commit 6568fcfd5e
81 changed files with 419 additions and 465 deletions
+4 -7
View File
@@ -1,6 +1,5 @@
import _ from 'lodash';
import i18n from '../i18n';
import splitWhitespace from '../libs/splitWhitespace';
import {
BadRequest,
NotAuthorized,
@@ -35,10 +34,8 @@ module.exports = function addPushDevice (user, req = {}) {
pushDevices.push(item);
let response = {
data: _.pick(user, splitWhitespace('pushDevices')),
message: i18n.t('pushDeviceAdded', req.language),
};
return response;
return [
user.pushDevices,
i18n.t('pushDeviceAdded', req.language),
];
};
+7 -6
View File
@@ -7,8 +7,7 @@ import {
import _ from 'lodash';
module.exports = function addWebhook (user, req = {}) {
let wh;
wh = user.preferences.webhooks;
let wh = user.preferences.webhooks;
if (!validator.isURL(_.get(req, 'body.url'))) throw new BadRequest(i18n.t('invalidUrl', req.language));
if (!validator.isBoolean(_.get(req, 'body.enabled'))) throw new BadRequest(i18n.t('invalidEnabled', req.language));
@@ -18,9 +17,11 @@ module.exports = function addWebhook (user, req = {}) {
if (req.v2 === true) {
return user.preferences.webhooks;
} else {
return refPush(wh, {
url: req.body.url,
enabled: req.body.enabled,
});
return [
refPush(wh, {
url: req.body.url,
enabled: req.body.enabled,
}),
];
}
};
+3 -2
View File
@@ -1,5 +1,4 @@
import _ from 'lodash';
import splitWhitespace from '../libs/splitWhitespace';
import {
ATTRIBUTES,
} from '../constants';
@@ -26,5 +25,7 @@ module.exports = function allocate (user, req = {}) {
throw new NotAuthorized(i18n.t('notEnoughAttrPoints', req.language));
}
return _.pick(user, splitWhitespace('stats'));
return [
user.stats,
];
};
+3 -3
View File
@@ -8,8 +8,8 @@ module.exports = function allocateNow (user, req = {}) {
if (req.v2 === true) {
return _.pick(user, 'stats');
} else {
return {
data: _.pick(user, 'stats'),
};
return [
user.stats,
];
}
};
+3 -1
View File
@@ -15,5 +15,7 @@ module.exports = function blockUser (user, req = {}) {
}
user.markModified('inbox.blocks');
return user.inbox.blocks;
return [
user.inbox.blocks,
];
};
+7 -8
View File
@@ -101,16 +101,15 @@ module.exports = function buyArmoire (user, req = {}, analytics) {
});
}
let res = {
data: _.pick(user, splitWhitespace('items flags')),
message,
};
if (armoireResp) res.armoire = armoireResp;
let resData = _.pick(user, splitWhitespace('items flags'));
if (armoireResp) resData.armoire = armoireResp;
if (req.v2 === true) {
return res.data;
return resData;
} else {
return res;
return [
resData,
message,
];
}
};
+5 -7
View File
@@ -59,14 +59,12 @@ module.exports = function buyGear (user, req = {}, analytics) {
});
}
let res = {
data: _.pick(user, splitWhitespace('items achievements stats flags')),
message,
};
if (req.v2 === true) {
return res.data;
return _.pick(user, splitWhitespace('items achievements stats flags'));
} else {
return res;
return [
_.pick(user, splitWhitespace('items achievements stats flags')),
message,
];
}
};
+4 -4
View File
@@ -47,9 +47,9 @@ module.exports = function buyMysterySet (user, req = {}, analytics) {
if (req.v2 === true) {
return pickDeep(user, splitWhitespace('items purchased.plan.consecutive'));
} else {
return {
data: pickDeep(user, splitWhitespace('items purchased.plan.consecutive')),
message: i18n.t('hourglassPurchaseSet', req.language),
};
return [
{ items: user.items, purchasedPlanConsecutive: user.purchased.plan.consecutive },
i18n.t('hourglassPurchaseSet', req.language),
];
}
};
+5 -9
View File
@@ -1,7 +1,5 @@
import content from '../content/index';
import i18n from '../i18n';
import _ from 'lodash';
import splitWhitespace from '../libs/splitWhitespace';
import {
NotAuthorized,
} from '../libs/errors';
@@ -39,14 +37,12 @@ module.exports = function buyPotion (user, req = {}, analytics) {
});
}
let res = {
data: _.pick(user, splitWhitespace('stats')),
message,
};
if (req.v2 === true) {
return res.data;
return user.stats;
} else {
return res;
return [
user.stats,
message,
];
}
};
+4 -4
View File
@@ -40,11 +40,11 @@ module.exports = function buyQuest (user, req = {}, analytics) {
if (req.v2 === true) {
return user.items.quests;
} else {
return {
data: user.items.quests,
message: i18n.t('messageBought', {
return [
user.items.quests,
i18n.t('messageBought', {
itemText: item.text(req.language),
}, req.language),
};
];
}
};
+4 -4
View File
@@ -25,11 +25,11 @@ module.exports = function buySpecialSpell (user, req = {}) {
if (req.v2 === true) {
return _.pick(user, splitWhitespace('items stats'));
} else {
return {
data: _.pick(user, splitWhitespace('items stats')),
message: i18n.t('messageBought', {
return [
_.pick(user, splitWhitespace('items stats')),
i18n.t('messageBought', {
itemText: item.text(req.language),
}, req.language),
};
];
}
};
+3 -3
View File
@@ -71,8 +71,8 @@ module.exports = function changeClass (user, req = {}, analytics) {
if (req.v2 === true) {
return _.pick(user, splitWhitespace('stats flags items preferences'));
} else {
return {
data: _.pick(user, splitWhitespace('stats flags items preferences')),
};
return [
_.pick(user, splitWhitespace('stats flags items preferences')),
];
}
};
+3 -1
View File
@@ -1,5 +1,7 @@
module.exports = function clearPMs (user) {
user.inbox.messages = {};
user.markModified('inbox.messages');
return user.inbox.messages;
return [
user.inbox.messages,
];
};
+3 -1
View File
@@ -3,5 +3,7 @@ import _ from 'lodash';
module.exports = function deletePM (user, req = {}) {
delete user.inbox.messages[_.get(req, 'params.id')];
user.markModified(`inbox.messages.${req.params.id}`);
return user.inbox.messages;
return [
user.inbox.messages,
];
};
+3 -1
View File
@@ -4,5 +4,7 @@ module.exports = function deleteWebhook (user, req) {
delete user.preferences.webhooks[_.get(req, 'params.id')];
user.markModified('preferences.webhooks');
return user.preferences.webhooks;
return [
user.preferences.webhooks,
];
};
+3 -3
View File
@@ -13,8 +13,8 @@ module.exports = function disableClasses (user, req = {}) {
if (req.v2 === true) {
return _.pick(user, splitWhitespace('stats flags preferences'));
} else {
return {
data: _.pick(user, splitWhitespace('stats flags preferences')),
};
return [
_.pick(user, splitWhitespace('stats flags preferences')),
];
}
};
+2 -5
View File
@@ -58,14 +58,11 @@ module.exports = function equip (user, req = {}) {
}
}
let res = {
data: user.items,
};
if (message) res.message = message;
if (req.v2 === true) {
return user.items;
} else {
let res = [user.items];
if (message) res.push(message);
return res;
}
};
+3 -3
View File
@@ -94,9 +94,9 @@ module.exports = function feed (user, req = {}) {
value: userPets[pet],
};
} else {
return {
data: userPets[pet],
return [
userPets[pet],
message,
};
];
}
};
+4 -4
View File
@@ -36,9 +36,9 @@ module.exports = function hatch (user, req = {}) {
if (req.v2 === true) {
return user.items;
} else {
return {
message: i18n.t('messageHatched', req.language),
data: user.items,
};
return [
user.items,
i18n.t('messageHatched', req.language),
];
}
};
+6 -9
View File
@@ -1,12 +1,11 @@
import content from '../content/index';
import i18n from '../i18n';
import _ from 'lodash';
import splitWhitespace from '../libs/splitWhitespace';
import pickDeep from '../libs/pickDeep';
import {
BadRequest,
NotAuthorized,
} from '../libs/errors';
import splitWhitespace from '../libs/splitWhitespace';
module.exports = function purchaseHourglass (user, req = {}, analytics) {
let key = _.get(req, 'params.key');
@@ -51,14 +50,12 @@ module.exports = function purchaseHourglass (user, req = {}, analytics) {
});
}
let res = {
data: pickDeep(user, splitWhitespace('items purchased.plan.consecutive')),
message: i18n.t('hourglassPurchase', req.language),
};
if (req.v2 === true) {
return res.data;
return _.pick(user, splitWhitespace('items purchased.plan.consecutive'));
} else {
return res;
return [
{ items: user.items, purchasedPlanConsecutive: user.purchased.plan.consecutive },
i18n.t('hourglassPurchase', req.language),
];
}
};
+4 -4
View File
@@ -36,9 +36,9 @@ module.exports = function openMysteryItem (user, req = {}, analytics) {
if (req.v2 === true) {
return user.items.gear.owned;
} else {
return {
message: i18n.t('mysteryItemOpened', req.language),
data: user.items.gear.owned,
};
return [
user.items.gear.owned,
i18n.t('mysteryItemOpened', req.language),
];
}
};
+9 -13
View File
@@ -54,12 +54,10 @@ module.exports = function purchase (user, req = {}, analytics) {
});
}
let response = {
data: _.pick(user, splitWhitespace('stats balance')),
message: i18n.t('plusOneGem'),
};
return response;
return [
_.pick(user, splitWhitespace('stats balance')),
i18n.t('plusOneGem'),
];
}
let acceptedTypes = ['eggs', 'hatchingPotions', 'food', 'quests', 'gear'];
@@ -119,14 +117,12 @@ module.exports = function purchase (user, req = {}, analytics) {
});
}
let response = {
data: _.pick(user, splitWhitespace('items balance')),
message: i18n.t('purchased', {type, key}),
};
if (req.v2 === true) {
return response.data;
return _.pick(user, splitWhitespace('items balance'));
} else {
return response;
return [
_.pick(user, splitWhitespace('items balance')),
i18n.t('purchased', {type, key}),
];
}
};
+4 -4
View File
@@ -24,9 +24,9 @@ module.exports = function readCard (user, req = {}) {
if (req.v2 === true) {
return _.pick(user, splitWhitespace('items.special flags.cardReceived'));
} else {
return {
message: i18n.t('readCard', {cardType}, req.language),
data: _.pick(user, splitWhitespace('items.special flags.cardReceived')),
};
return [
{ specialItems: user.items.special, cardReceived: user.flags.cardReceived },
i18n.t('readCard', {cardType}, req.language),
];
}
};
+4 -6
View File
@@ -98,14 +98,12 @@ module.exports = function rebirth (user, tasks = [], req = {}, analytics) {
user.stats.buffs = {};
let response = {
data: user,
message: i18n.t('rebirthComplete'),
};
if (req.v2 === true) {
return user;
} else {
return response;
return [
user,
i18n.t('rebirthComplete'),
];
}
};
+4 -6
View File
@@ -57,14 +57,12 @@ module.exports = function releaseBoth (user, req = {}, analytics) {
user.achievements.triadBingoCount++;
}
let response = {
data: _.pick(user, splitWhitespace('achievements')),
message: i18n.t('mountsAndPetsReleased'),
};
if (req.v2 === true) {
return user;
} else {
return response;
return [
_.pick(user, splitWhitespace('achievements items balance')),
i18n.t('mountsAndPetsReleased'),
];
}
};
+4 -8
View File
@@ -3,8 +3,6 @@ import i18n from '../i18n';
import {
NotAuthorized,
} from '../libs/errors';
import splitWhitespace from '../libs/splitWhitespace';
import _ from 'lodash';
module.exports = function releaseMounts (user, req = {}, analytics) {
let mount;
@@ -34,14 +32,12 @@ module.exports = function releaseMounts (user, req = {}, analytics) {
});
}
let response = {
data: _.pick(user, splitWhitespace('mounts')),
message: i18n.t('mountsReleased'),
};
if (req.v2 === true) {
return user;
} else {
return response;
return [
user.items.mounts,
i18n.t('mountsReleased'),
];
}
};
+4 -8
View File
@@ -3,8 +3,6 @@ import i18n from '../i18n';
import {
NotAuthorized,
} from '../libs/errors';
import splitWhitespace from '../libs/splitWhitespace';
import _ from 'lodash';
module.exports = function releasePets (user, req = {}, analytics) {
if (user.balance < 1) {
@@ -32,14 +30,12 @@ module.exports = function releasePets (user, req = {}, analytics) {
});
}
let response = {
data: _.pick(user, splitWhitespace('user.items.pets')),
message: i18n.t('petsReleased'),
};
if (req.v2 === true) {
return user;
} else {
return response;
return [
user.items.pets,
i18n.t('petsReleased'),
];
}
};
+4 -6
View File
@@ -27,14 +27,12 @@ module.exports = function reroll (user, tasks = [], req = {}, analytics) {
});
}
let response = {
data: {user, tasks},
message: i18n.t('rerollComplete'),
};
if (req.v2 === true) {
return user;
} else {
return response;
return [
{user, tasks},
i18n.t('rerollComplete'),
];
}
};
+4 -6
View File
@@ -19,14 +19,12 @@ module.exports = function reset (user, tasks = [], req = {}) {
resetGear(user);
let response = {
data: {user, tasksToRemove},
message: i18n.t('resetComplete'),
};
if (req.v2 === true) {
return user;
} else {
return response;
return [
{user, tasksToRemove},
i18n.t('resetComplete'),
];
}
};
+4 -7
View File
@@ -4,7 +4,6 @@ import _ from 'lodash';
import {
NotAuthorized,
} from '../libs/errors';
import splitWhitespace from '../libs/splitWhitespace';
import randomVal from '../fns/randomVal';
module.exports = function revive (user, req = {}, analytics) {
@@ -97,14 +96,12 @@ module.exports = function revive (user, req = {}, analytics) {
});
}
let response = {
data: _.pick(user, splitWhitespace('user.items')),
message,
};
if (req.v2 === true) {
return user;
} else {
return response;
return [
user.items,
message,
];
}
};
+1 -1
View File
@@ -257,5 +257,5 @@ module.exports = function scoreTask (options = {}, req = {}) {
}
updateStats(user, stats, req);
return delta;
return [delta];
};
+5 -7
View File
@@ -33,14 +33,12 @@ module.exports = function sell (user, req = {}) {
user.items[type][key]--;
user.stats.gp += content[type][key].value;
let response = {
data: _.pick(user, splitWhitespace('stats items')),
message: i18n.t('sold', {type, key}),
};
if (req.v2 === true) {
return response.data;
return _.pick(user, splitWhitespace('stats items'));
} else {
return response;
return [
_.pick(user, splitWhitespace('stats items')),
i18n.t('sold', {type, key}),
];
}
};
+1 -5
View File
@@ -4,10 +4,6 @@ module.exports = function sleep (user, req = {}) {
if (req.v2 === true) {
return {};
} else {
return {
preferences: {
sleep: user.preferences.sleep,
},
};
return [user.preferences.sleep];
}
};
+5 -7
View File
@@ -75,14 +75,12 @@ module.exports = function unlock (user, req = {}, analytics) {
});
}
let response = {
data: _.pick(user, splitWhitespace('purchased preferences items')),
message: i18n.t('unlocked'),
};
if (req.v2 === true) {
return response.data;
return _.pick(user, splitWhitespace('purchased preferences items'));
} else {
return response;
return [
_.pick(user, splitWhitespace('purchased preferences items')),
i18n.t('unlocked'),
];
}
};
+1 -1
View File
@@ -22,5 +22,5 @@ module.exports = function updateTask (task, req = {}) {
_.merge(task, _.omit(req.body, ['_id', 'id', 'type']));
return task;
return [task];
};
+1 -1
View File
@@ -15,6 +15,6 @@ module.exports = function updateWebhook (user, req) {
if (req.v2 === true) {
return user.preferences.webhooks;
} else {
return user.preferences.webhooks[req.params.id];
return [user.preferences.webhooks[req.params.id]];
}
};