@@ -0,0 +1,21 @@
'use strict';

let Guild = require('./model');
let Character = require('../character/model');
let _ = require('lodash');

// Returns a promise resolving the requested guild
function createOrUpdateGuild(guildName, body) {
return Guild
.findOneAndUpdate({name: { $regex: new RegExp(guildName, 'i') }},
body, {upsert: true}).exec();
}
// Returns a promise resolving the requested guild details
function getGuild(guildName) {
return Guild.findOne({name: { $regex: new RegExp(guildName, 'i') }}).exec();
}

module.exports = {
createOrUpdateGuild: createOrUpdateGuild,
getGuild: getGuild
};
@@ -5,6 +5,14 @@ function buildGetUrl(path, params) {
return conf.battlenet.host + path + '?' + objectToQueryString(Object.assign({}, params || {}, {apikey: conf.battlenet.key}));
}

function isAdminAuthenticated(req, res, next) {
if (req.headers.authorization === conf.epgp.apiKey) {
return next();
}

return res.status(401).send('Invalid Admin Token');
}

function objectToQueryString(json) {
return Object.keys(json).map((key) => {
let val = json[key];
@@ -34,6 +42,7 @@ function sleep(milliseconds) {

module.exports = {
buildGetUrl: buildGetUrl,
isAdminAuthenticated: isAdminAuthenticated,
objectToQueryString: objectToQueryString,
parseFetchResponse: parseFetchResponse,
sleep: sleep
@@ -9,6 +9,7 @@
},
"license": "MIT",
"dependencies": {
"body-parser": "^1.15.2",
"cors": "^2.7.1",
"es6-promise": "^3.1.2",
"express": "4.13.4",
@@ -6,11 +6,12 @@ let helpers = require('../lib/helpers');
let fetch = require('node-fetch');
let moment = require('moment');
let Promise = require('es6-promise').Promise;
let guildService = require('../lib/guild/service');
let _ = require('lodash');

const GUILD_API_PATH = '/wow/guild/Thrall/No%20Breaks';

function getMembers() {
function updateRoster() {
let query = {
fields: 'members',
locale: 'en_US'
@@ -29,28 +30,33 @@ function getMembers() {

let promises = [];

promises.push(guildService.getGuild('No Breaks'));

_.forEach(json.members, (member) => {

let promise = new Promise((resolve, reject) => {
fetch('http://127.0.0.1:5002/v1/character/' + member.character.realm + '/' + encodeURIComponent(member.character.name) + '/items')
.then(helpers.parseFetchResponse)
/* fetch('http://127.0.0.1:5002/v1/character/' + member.character.realm + '/' + encodeURIComponent(member.character.name) + '/items')
.then(helpers.parseFetchResponse)1
.then((json) => {
member.items = {
averageItemLevel: json.items.averageItemLevel,
averageItemLevelEquipped: json.items.averageItemLevelEquipped
};
};*/
resolve(member);
}, (error) => {
/* }, (error) => {
reject(error);
});
}); */
});

promises.push(promise);
});

Promise.all(promises).then((members) => {
let guildDetails = members[0];
let dbPromises = []

members.shift();

// Update members
_.forEach(members, (member, idx) => {
let memberObj = {
@@ -63,7 +69,8 @@ function getMembers() {
thumbnail: member.character.thumbnail,
calcClass: member.character.calcClass,
rank: member.rank,
items: member.items
items: member.items,
guildId: guildDetails._id
};

dbPromises.push(Character.findOneAndUpdate({name: member.character.name}, memberObj, {upsert: true}).exec());
@@ -95,4 +102,4 @@ function getMembers() {
}


getMembers();
updateRoster();