123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import axios from "axios";
- const id = "b2226ece2b6fce3bb116";
- const sec = "be0525b65ff757d7e70e19589655fe5a41d4e2aa";
- const param = `?client_id=${id}&client_secret=${sec}`;
- function getUserInfo(username) {
- return axios.get(`https://api.github.com/users/${username}${param}`);
- }
- /**
- * Fetch repos for username.
- *
- * @param username
- */
- function getRepos(username) {
- return axios.get(`https://api.github.com/users/${username}/repos${param}&per_page=100`);
- }
- /**
- * Calculate all the stars that the user has.
- *
- * @param repos
- */
- function getTotalStars(repos) {
- console.log("getTotalStars, repos", repos);
- return repos.data.reduce((accu, repo) => {
- return accu + repo.stargazers_count;
- }, 0);
- }
- /**
- * Get repos, get total stars, return object with these data.
- *
- * @param player
- */
- function getPlayersData(player) {
- return getRepos(player.login)
- .then(getTotalStars)
- .then((totalStars) => {
- return {
- followers: player.followers,
- totalStars
- };
- });
- }
- /**
- * Return an array after doing some fancy calculation to determine a winner.
- *
- * @param players
- */
- function calculateScores(players) {
- return [
- players[0].followers * 3 + players[0].totalStars,
- players[1].followers * 3 + players[1].totalStars
- ];
- }
- const helpers = {
- battle(players) {
- const playerOneData = getPlayersData(players[0]);
- const playerTwoData = getPlayersData(players[1]);
- return axios.all([playerOneData, playerTwoData])
- .then(calculateScores)
- .catch((err) => {
- console.warn("Battle getPlayersData error", err);
- });
- },
- getPlayersInfo(players) {
- // fetch some data from Github
- return axios.all(players.map((username) => {
- return getUserInfo(username);
- })).then((info) => {
- return info.map((item) => {
- return item.data;
- });
- }).catch((err) => {
- console.warn("Error in getPlayerInfo", err);
- });
- }
- };
- export default helpers;
|