resolving conflicts

This commit is contained in:
Victor Piousbox
2016-04-04 16:37:51 +00:00
20 changed files with 582 additions and 114 deletions

View File

@@ -121,6 +121,9 @@ import openMysteryItem from './ops/openMysteryItem';
import addWebhook from './ops/addWebhook';
import updateWebhook from './ops/updateWebhook';
import deleteWebhook from './ops/deleteWebhook';
import releasePets from './ops/releasePets';
import releaseBoth from './ops/releaseBoth';
import releaseMounts from './ops/releaseMounts';
api.ops = {
scoreTask,
@@ -143,6 +146,9 @@ api.ops = {
addWebhook,
updateWebhook,
deleteWebhook,
releasePets,
releaseBoth,
releaseMounts,
};
import handleTwoHanded from './fns/handleTwoHanded';

View File

@@ -2,16 +2,16 @@ import refPush from '../libs/refPush';
import validator from 'validator';
import i18n from '../i18n';
import {
NotFound,
BadRequest,
} from '../libs/errors';
import _ from 'lodash';
module.exports = function(user, req) {
var wh;
module.exports = function addWebhook (user, req = {}) {
let wh;
wh = user.preferences.webhooks;
if(!validator.isURL(req.body.url)) throw new BadRequest(i18n.t('invalidUrl', req.language));
if(!validator.isBoolean(req.body.enabled)) throw new BadRequest(i18n.t('invalidEnabled', req.language));
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));
user.markModified('preferences.webhooks');

View File

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

View File

@@ -1,50 +1,65 @@
import content from '../content/index';
import i18n from '../i18n';
import {
NotAuthorized,
} from '../libs/errors';
import splitWhitespace from '../libs/splitWhitespace';
module.exports = function releaseBoth (user, req = {}, analytics) {
let animal;
module.exports = function(user, req, cb, analytics) {
var analyticsData, animal, giveTriadBingo;
if (user.balance < 1.5 && !user.achievements.triadBingo) {
return typeof cb === "function" ? cb({
code: 401,
message: i18n.t('notEnoughGems', req.language)
}) : void 0;
} else {
giveTriadBingo = true;
if (!user.achievements.triadBingo) {
analyticsData = {
throw new NotAuthorized(i18n.t('notEnoughGems', req.language));
}
let giveTriadBingo = true;
if (!user.achievements.triadBingo) {
if (analytics) {
analytics.track('release pets & mounts', {
uuid: user._id,
acquireMethod: 'Gems',
gemCost: 6,
category: 'behavior'
};
if (typeof analytics !== "undefined" && analytics !== null) {
analytics.track('release pets & mounts', analyticsData);
}
user.balance -= 1.5;
}
user.items.currentMount = "";
user.items.currentPet = "";
for (animal in content.pets) {
if (user.items.pets[animal] === -1) {
giveTriadBingo = false;
}
user.items.pets[animal] = 0;
user.items.mounts[animal] = null;
}
if (!user.achievements.beastMasterCount) {
user.achievements.beastMasterCount = 0;
}
user.achievements.beastMasterCount++;
if (!user.achievements.mountMasterCount) {
user.achievements.mountMasterCount = 0;
}
user.achievements.mountMasterCount++;
if (giveTriadBingo) {
if (!user.achievements.triadBingoCount) {
user.achievements.triadBingoCount = 0;
}
user.achievements.triadBingoCount++;
});
}
user.balance -= 1.5;
}
return typeof cb === "function" ? cb(null, user) : void 0;
user.items.currentMount = "";
user.items.currentPet = "";
for (animal in content.pets) {
if (user.items.pets[animal] === -1) {
giveTriadBingo = false;
}
user.items.pets[animal] = 0;
user.items.mounts[animal] = null;
}
if (!user.achievements.beastMasterCount) {
user.achievements.beastMasterCount = 0;
}
user.achievements.beastMasterCount++;
if (!user.achievements.mountMasterCount) {
user.achievements.mountMasterCount = 0;
}
user.achievements.mountMasterCount++;
if (giveTriadBingo) {
if (!user.achievements.triadBingoCount) {
user.achievements.triadBingoCount = 0;
}
user.achievements.triadBingoCount++;
}
let response = {
data: _.pick(user, splitWhitespace('achievements')),
message: i18n.t('mountsAndPetsReleased'),
};
return response;
};

View File

@@ -1,32 +1,42 @@
import content from '../content/index';
import i18n from '../i18n';
import {
NotAuthorized,
} from '../libs/errors';
import splitWhitespace from '../libs/splitWhitespace';
module.exports = function releaseMounts (user, req = {}, analytics) {
let mount;
module.exports = function(user, req, cb, analytics) {
var analyticsData, mount;
if (user.balance < 1) {
return typeof cb === "function" ? cb({
code: 401,
message: i18n.t('notEnoughGems', req.language)
}) : void 0;
} else {
user.balance -= 1;
user.items.currentMount = "";
for (mount in content.pets) {
user.items.mounts[mount] = null;
}
if (!user.achievements.mountMasterCount) {
user.achievements.mountMasterCount = 0;
}
user.achievements.mountMasterCount++;
throw new NotAuthorized(i18n.t('notEnoughGems', req.language));
}
analyticsData = {
uuid: user._id,
acquireMethod: 'Gems',
gemCost: 4,
category: 'behavior'
user.balance -= 1;
user.items.currentMount = '';
for (mount in content.pets) {
user.items.mounts[mount] = null;
}
if (!user.achievements.mountMasterCount) {
user.achievements.mountMasterCount = 0;
}
user.achievements.mountMasterCount++;
if (analytics) {
analytics.track('release mounts', {
uuid: user._id,
acquireMethod: 'Gems',
gemCost: 4,
category: 'behavior'
});
}
let response = {
data: _.pick(user, splitWhitespace('mounts')),
message: i18n.t('mountsReleased'),
};
if (analytics != null) {
analytics.track('release mounts', analyticsData);
}
return typeof cb === "function" ? cb(null, user) : void 0;
return response;
};

View File

@@ -1,32 +1,40 @@
import content from '../content/index';
import i18n from '../i18n';
import {
NotAuthorized,
} from '../libs/errors';
import splitWhitespace from '../libs/splitWhitespace';
module.exports = function(user, req, cb, analytics) {
var analyticsData, pet;
module.exports = function releasePets (user, req = {}, analytics) {
if (user.balance < 1) {
return typeof cb === "function" ? cb({
code: 401,
message: i18n.t('notEnoughGems', req.language)
}) : void 0;
} else {
user.balance -= 1;
for (pet in content.pets) {
user.items.pets[pet] = 0;
}
if (!user.achievements.beastMasterCount) {
user.achievements.beastMasterCount = 0;
}
user.achievements.beastMasterCount++;
user.items.currentPet = "";
throw new NotAuthorized(i18n.t('notEnoughGems', req.language));
}
analyticsData = {
uuid: user._id,
acquireMethod: 'Gems',
gemCost: 4,
category: 'behavior'
user.balance -= 1;
user.items.currentPet = '';
for (let pet in content.pets) {
user.items.pets[pet] = 0;
}
if (!user.achievements.beastMasterCount) {
user.achievements.beastMasterCount = 0;
}
user.achievements.beastMasterCount++;
if (analytics) {
analytics.track('release pets', {
uuid: user._id,
acquireMethod: 'Gems',
gemCost: 4,
category: 'behavior'
});
}
let response = {
data: _.pick(user, splitWhitespace('user.items.pets')),
message: i18n.t('petsReleased'),
};
if (analytics != null) {
analytics.track('release pets', analyticsData);
}
return typeof cb === "function" ? cb(null, user) : void 0;
return response;
};

View File

@@ -1,16 +1,16 @@
import _ from 'lodash';
import validator from 'validator';
import i18n from '../i18n';
import {
NotFound,
BadRequest,
} from '../libs/errors';
module.exports = function(user, req) {
if(!validator.isURL(req.body.url)) throw new BadRequest(i18n.t('invalidUrl', req.language));
if(!validator.isBoolean(req.body.enabled)) throw new BadRequest(i18n.t('invalidEnabled', req.language));
module.exports = function updateWebhook (user, req) {
if (!validator.isURL(req.body.url)) throw new BadRequest(i18n.t('invalidUrl', req.language));
if (!validator.isBoolean(req.body.enabled)) throw new BadRequest(i18n.t('invalidEnabled', req.language));
user.markModified('preferences.webhooks');
user.preferences.webhooks[req.params.id].url = req.body.url;
user.preferences.webhooks[req.params.id].enabled = req.body.enabled;
return user.preferences.webhooks[req.params.id];
};