mirror of
https://github.com/vkaelin/LeagueStats.git
synced 2026-03-25 21:07:27 +00:00
Try to make 10 request : 1 per match
This commit is contained in:
parent
8f91674a95
commit
6a760869e8
3 changed files with 94 additions and 65 deletions
|
|
@ -16,11 +16,40 @@ function onLoad() {
|
|||
var userStats = parsedEntireResponse[0];
|
||||
var rankedStats = JSON.parse(parsedEntireResponse[1]);
|
||||
var soloQStats = rankedStats.length !== 0 ? (rankedStats[0].queueType == 'RANKED_SOLO_5x5' ? rankedStats[0] : rankedStats[1]) : false;
|
||||
var matches = parsedEntireResponse[2];
|
||||
//console.log(userStats);
|
||||
//console.log(rankedStats);
|
||||
console.log(matches);
|
||||
console.log(soloQStats);
|
||||
var matches = parsedEntireResponse[2].matches;
|
||||
var accountId = userStats.accountId;
|
||||
|
||||
var matchesInfos = [];
|
||||
// Loop on all matches
|
||||
for (let i = 0; i < matches.length; i++) {
|
||||
var currentMatch = matches[i];
|
||||
var participantId;
|
||||
for (let i = 0; i < currentMatch.participantIdentities.length; i++) {
|
||||
if (currentMatch.participantIdentities[i].player.accountId === accountId)
|
||||
participantId = currentMatch.participantIdentities[i].participantId;
|
||||
}
|
||||
|
||||
var teamId = currentMatch.participants[participantId - 1].teamId;
|
||||
|
||||
var win = false;
|
||||
for (let i = 0; i < currentMatch.teams.length; i++) {
|
||||
if (currentMatch.teams[i].teamId === teamId) {
|
||||
if (currentMatch.teams[i].win === 'Win')
|
||||
win = true;
|
||||
}
|
||||
}
|
||||
|
||||
var champion = currentMatch.participants[participantId - 1].championId;
|
||||
var role = currentMatch.participants[participantId - 1].timeline.lane;
|
||||
|
||||
matchesInfos.push({
|
||||
result: win,
|
||||
champ: champion,
|
||||
role: role
|
||||
});
|
||||
}
|
||||
console.log(matchesInfos);
|
||||
|
||||
|
||||
document.querySelector('.player__pp').style.background = 'url(https://cdn.valentinkaelin.ch/riot/profileicon/' + userStats.profileIconId + '.png) center/cover';
|
||||
document.querySelector('.player__name').innerHTML = userStats.name;
|
||||
|
|
@ -39,13 +68,14 @@ function onLoad() {
|
|||
var matchesList = document.createElement('ul');
|
||||
matchesList.className = 'list-matches';
|
||||
playerContainer.appendChild(matchesList);
|
||||
matches.matches.forEach(e => {
|
||||
matchesInfos.forEach(e => {
|
||||
var li = document.createElement('li');
|
||||
li.className = e.result ? 'win' : 'lose';
|
||||
var img = document.createElement('img');
|
||||
var championName = championsId[e.champion];
|
||||
var championName = championsId[e.champ];
|
||||
img.setAttribute('src', '/public/img/champions/' + championName + '.png');
|
||||
img.className = 'champion-icon';
|
||||
li.innerHTML = championName + ' - ' + e.lane;
|
||||
li.innerHTML = championName + ' - ' + e.role;
|
||||
li.appendChild(img);
|
||||
matchesList.appendChild(li);
|
||||
});
|
||||
|
|
@ -62,7 +92,6 @@ var nameToPick = document.querySelector('#name')
|
|||
changeName.addEventListener('submit', function (e) {
|
||||
e.preventDefault();
|
||||
//url = '/api?' + nameToPick.value;
|
||||
url = '/api';
|
||||
req.open('POST', url, true);
|
||||
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
||||
req.send('playerName=' + nameToPick.value);
|
||||
|
|
@ -75,11 +104,11 @@ changeName.addEventListener('submit', function (e) {
|
|||
function getRankImg(soloQStats) {
|
||||
if (soloQStats) {
|
||||
if (soloQStats.tier != 'MASTER' && soloQStats.tier != 'CHALLENGER') {
|
||||
return '/public/img/tier-icons/' + soloQStats.tier.toLowerCase() + '_' + soloQStats.rank.toLowerCase() + '.png';
|
||||
return 'https://cdn.valentinkaelin.ch/riot/tier-icons/' + soloQStats.tier.toLowerCase() + '_' + soloQStats.rank.toLowerCase() + '.png';
|
||||
} else {
|
||||
return '/public/img/tier-icons/' + soloQStats.tier.toLowerCase() + '.png';
|
||||
return 'https://cdn.valentinkaelin.ch/riot/tier-icons/' + soloQStats.tier.toLowerCase() + '.png';
|
||||
}
|
||||
} else {
|
||||
return '/public/img/tier-icons/provisional.png';
|
||||
return 'https://cdn.valentinkaelin.ch/riot/tier-icons/provisional.png';
|
||||
}
|
||||
}
|
||||
|
|
@ -39,15 +39,16 @@
|
|||
|
||||
.list-matches li {
|
||||
padding: 10px 0;
|
||||
background: #F1F5F8;
|
||||
background: #51D88A;
|
||||
}
|
||||
|
||||
.list-matches li:nth-child(2n) {
|
||||
background: #DAE1E7;
|
||||
.list-matches li.lose {
|
||||
background: #EF5753;
|
||||
}
|
||||
|
||||
.champion-icon {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
margin-left: 5px;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
85
server.js
85
server.js
|
|
@ -2,14 +2,17 @@ const express = require('express')
|
|||
const request = require('request');
|
||||
const path = require('path');
|
||||
const bodyParser = require('body-parser');
|
||||
const rp = require('request-promise');
|
||||
var Promise = require("bluebird");
|
||||
|
||||
const app = express()
|
||||
app.set('port', (process.env.PORT || 5000))
|
||||
|
||||
const key = 'RGAPI-5be8ff59-ab0b-48a8-a924-10984670a571';
|
||||
const key = 'RGAPI-158e34a3-b8c2-4835-81bd-6bf0537e8c04';
|
||||
var summonerID = 'HMOiIUvzYtfgPk5X53zWTeOZo52T-HYJQhwvhkPNh0BWxZ0';
|
||||
var accountID = 'V1xNS14bjVeP54hg03JeMxkXJB29K4TfUMvijDB85nxbD4Y';
|
||||
var pseudo = 'Chil';
|
||||
var JSONMatches;
|
||||
|
||||
/* To retrieve data of post request */
|
||||
app.use(bodyParser.json()); // to support JSON-encoded bodies
|
||||
|
|
@ -29,6 +32,15 @@ app.use('/public', express.static(__dirname + '/public'));
|
|||
app.listen(app.get('port'), () => console.log(`RiotAPI test app listening on port ${app.get('port')}!`))
|
||||
|
||||
|
||||
|
||||
function apicall(urlApi) {
|
||||
//console.log(urlApi);
|
||||
return rp({ url: 'https://euw1.api.riotgames.com/lol/match/v4/matches/' + urlApi + '?api_key=' + key, json: true }).then(function (obj) {
|
||||
return addMatchToJSON(obj);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Get data of rankeds
|
||||
function getRanked(callback) {
|
||||
request('https://euw1.api.riotgames.com/lol/league/v4/positions/by-summoner/' + summonerID + '?api_key=' + key, function (error, response, body) {
|
||||
|
|
@ -40,27 +52,8 @@ function getRanked(callback) {
|
|||
|
||||
|
||||
// send data of rankeds and of username
|
||||
app.get('/api', function (req, res) {
|
||||
var name = req.url.split('?')[1];
|
||||
if (name != undefined) {
|
||||
pseudo = name;
|
||||
}
|
||||
getAccountInfos(function (account) {
|
||||
getRanked(function (ranked) {
|
||||
getMatches(function(matches) {
|
||||
var finalJSON = new Array();
|
||||
finalJSON.push(account);
|
||||
finalJSON.push(ranked);
|
||||
finalJSON.push(matches);
|
||||
res.send(finalJSON);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
app.post('/api', function (req, res) {
|
||||
console.log(req.body.playerName);
|
||||
//console.log(req.body.playerName);
|
||||
pseudo = req.body.playerName;
|
||||
|
||||
getAccountInfos(function (account) {
|
||||
|
|
@ -78,31 +71,12 @@ app.post('/api', function(req, res) {
|
|||
});
|
||||
|
||||
|
||||
/*
|
||||
app.get('/api', function (req, res) {
|
||||
var name = req.url.split('?')[1];
|
||||
if (name != undefined) {
|
||||
pseudo = name;
|
||||
}
|
||||
getAccountInfos(function (JSONBody) {
|
||||
getRanked(function (body) {
|
||||
dataAPI = body;
|
||||
var finalJSON = new Array();
|
||||
finalJSON.push(JSONBody);
|
||||
finalJSON.push(dataAPI);
|
||||
res.send(finalJSON);
|
||||
});
|
||||
});
|
||||
});*/
|
||||
|
||||
|
||||
|
||||
// Get account infos of an username
|
||||
function getAccountInfos(callback) {
|
||||
request('https://euw1.api.riotgames.com/lol/summoner/v4/summoners/by-name/' + pseudo + '?api_key=' + key, function (error, response, body) {
|
||||
if (!error && response.statusCode == 200) {
|
||||
var JSONBody = JSON.parse(body);
|
||||
console.log(JSONBody);
|
||||
//console.log(JSONBody);
|
||||
summonerID = JSONBody.id;
|
||||
accountID = JSONBody.accountId;
|
||||
callback(JSONBody);
|
||||
|
|
@ -115,9 +89,34 @@ function getAccountInfos(callback) {
|
|||
function getMatches(callback) {
|
||||
request('https://euw1.api.riotgames.com/lol/match/v4/matchlists/by-account/' + accountID + '?endIndex=10&api_key=' + key, function (error, response, body) {
|
||||
if (!error && response.statusCode == 200) {
|
||||
var JSONMatches = JSON.parse(body);
|
||||
//console.log(JSONMatches);
|
||||
JSONMatches = JSON.parse(body);
|
||||
|
||||
let matchsId = new Array();
|
||||
for (let i = 0; i < JSONMatches.matches.length; i++) {
|
||||
matchsId[i] = JSONMatches.matches[i].gameId;
|
||||
}
|
||||
|
||||
Promise.mapSeries(matchsId, function (item) {
|
||||
return apicall(item);
|
||||
}).then(() => {
|
||||
console.log('Finished');
|
||||
callback(JSONMatches);
|
||||
}).catch(err => {
|
||||
console.log('Error');
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function addMatchToJSON(obj) {
|
||||
//console.log(obj.gameId);
|
||||
|
||||
for (let i = 0; i < JSONMatches.matches.length; i++) {
|
||||
if(JSONMatches.matches[i].gameId == obj.gameId) {
|
||||
//console.log('yes');
|
||||
JSONMatches.matches[i] = obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue