Javascript: running two Promises
const request = require('request');
const username = 'kzarzycki';
const api_token = 'XZvQs5ZuAR0d7VUEqbO3EcVPfuQ5q6yYLggjus7i';
const url = `https://${username}:${api_token}@api.challonge.com/v1/tournaments/sportradar_warsaw_league_2016`;
const matchesUrl = `matches.json`;
const usersUrl = 'participants.json';
// generic function to get get JSON
const getData = (url, path) => {
return new Promise((resolve, reject) => {
request({ uri: `${url}/${path}`, json: true }, (error, response, body) => {
if (!error && response.statusCode === 200) {
resolve(body);
} else {
reject({ error: error, response: response.body });
}
});
});
};
// filter users by group_player_ids and return array with players display_name
const getUserName = (usersList, groupId) => {
return usersList.filter(user => user.group_player_ids === groupId).map(user => user.display_name)[0];
};
var getMatches = getData(url, matchesUrl);
var getUsers = getData(url, usersUrl);
Promise.all([getMatches, getUsers]).then(data => {
let matches = data[0].map(match => match.match);
let users = data[1].map(user => user.participant);
let usersDisplayName = users.map(user => ({ display_name: user.display_name, group_player_ids: user.group_player_ids[0]}));
let matchPlayers = matches.filter(match => match.round === 1).map(match => [match.player1_id, match.player2_id]);
matchPlayers.map(match => {
let player1 = getUserName(usersDisplayName, match[0]);
let player2 = getUserName(usersDisplayName, match[1]);
console.log(`${player1}, ${player2}`);
});
}).catch(err => console.log(err.response.status, err.response.error));