Refactor some code 🤟

This commit is contained in:
Valentin Kaelin 2019-03-25 21:32:32 +01:00
parent 8e05d6fe9e
commit 6289229573
2 changed files with 54 additions and 79 deletions

View file

@ -71,9 +71,7 @@ function onLoad() {
return;
}
document.querySelector('#refresh').style.display = 'block';
const parsedEntireResponse = JSON.parse(response);
parsedEntireResponse[1] = JSON.parse(parsedEntireResponse[1]);
createObject(parsedEntireResponse);
createObject(JSON.parse(response));
}
function onError() {
@ -90,8 +88,8 @@ function createObject(JSONData) {
const userStats = JSONData[0];
const rankedStats = JSONData[1];
const soloQStats = rankedStats.length !== 0 ? (rankedStats[0].queueType == 'RANKED_SOLO_5x5' ? rankedStats[0] : rankedStats[1]) : false;
const matches = JSONData[2].matches;
const soloQStats = rankedStats !== null ? (rankedStats.queueType == 'RANKED_SOLO_5x5' ? rankedStats : JSONData[2]) : false;
const matches = JSONData[3].matches;
const matchesInfos = [];
// Loop on all matches
@ -115,7 +113,7 @@ function createObject(JSONData) {
const map = maps[currentMatch.mapId];
let mode = gameModes[currentMatch.queueId];
if (!mode)
mode = 'Undefinded gamemode';
mode = 'Undefined gamemode';
const champion = currentMatch.participants[participantId - 1].championId;
const role = currentMatch.participants[participantId - 1].timeline.lane;
const timeAgo = timeDifference(currentMatch.gameCreation);
@ -160,8 +158,8 @@ function createObject(JSONData) {
localInfos.level = userStats.summonerLevel;
localInfos.rank = soloQStats ? soloQStats.tier + ' ' + soloQStats.rank : 'Joueur non classé';
localInfos.rankImgLink = getRankImg(soloQStats);
localInfos.rankedWins = soloQStats.wins;
localInfos.rankedLosses = soloQStats.losses;
localInfos.rankedWins = soloQStats ? soloQStats.wins : undefined;
localInfos.rankedLosses = soloQStats ? soloQStats.losses : undefined;
nameChosen = userStats.name;
@ -321,11 +319,5 @@ function createHTMLOneMatch(e) {
* @param text : String to display - error message
*/
function displayPlayerNotFound(text) {
document.querySelector('.player__pp').style.background = 'url(https://cdn.valentinkaelin.ch/riot/profileicon/29.png) center/cover';
document.querySelector('.player__name').innerHTML = '';
document.querySelector('.player__level').innerHTML = '';
document.querySelector('.player__rank').innerHTML = '';
document.querySelector('.player__rank-img').style.background = 'https://cdn.valentinkaelin.ch/riot/tier-icons/provisional.png';
document.querySelector('.player__ratio').innerHTML = text;
document.querySelector('.list-matches').innerHTML = '';
document.querySelector('.player').innerHTML = `<h3>${text}</h3>`
}

111
server.js
View file

@ -13,6 +13,7 @@ let summonerID;
let accountID;
let username;
let JSONMatches;
let finalJSON = [];
/* Set Port */
app.set('port', (process.env.PORT || 5000))
@ -37,103 +38,85 @@ app.get('/summoners', function (request, response) {
app.use('/public', express.static(__dirname + '/public'));
/* Launch app */
app.listen(app.get('port'), () => console.log(`RiotAPI test app listening on port ${app.get('port')}!`))
app.listen(app.get('port'), () => console.log(`RiotAPI app listening on port ${app.get('port')}!`))
// Get data of one match
async 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) {
if (!error && response.statusCode == 200) {
callback(body);
}
})
}
// send data of rankeds and of username
// Send data of a summoner
app.post('/api', function (req, res) {
//console.log(req.body.playerName);
console.time('all')
username = req.body.playerName;
getAccountInfos(function (account) {
if (!account)
res.send(null)
getRanked(function (ranked) {
getMatches(function (matches) {
let finalJSON = [];
finalJSON.push(account);
finalJSON.push(ranked);
finalJSON.push(matches);
console.log('Data sent to front');
res.send(finalJSON);
console.timeEnd('all')
});
});
});
finalJSON = [];
getAccountInfos(res);
});
// Get account infos of an username
function getAccountInfos(callback) {
const getAccountInfos = function (res) {
request('https://euw1.api.riotgames.com/lol/summoner/v4/summoners/by-name/' + encodeURIComponent(username) + '?api_key=' + key, function (error, response, body) {
if (!error && response.statusCode == 200) {
let JSONBody = JSON.parse(body);
//console.log(JSONBody);
summonerID = JSONBody.id;
accountID = JSONBody.accountId;
callback(JSONBody);
finalJSON.push(JSONBody)
getRanked(res);
}
else {
console.log(response.statusCode);
console.log('username not found');
callback(null);
res.send(null);
}
});
}
// Get data of rankeds stats
const getRanked = function (res) {
request('https://euw1.api.riotgames.com/lol/league/v4/positions/by-summoner/' + summonerID + '?api_key=' + key, function (error, response, body) {
if (!error && response.statusCode == 200) {
let JSONBody = JSON.parse(body);
if (JSONBody.length > 0) {
finalJSON.push(...JSONBody);
} else {
console.log('empty rank stats')
finalJSON.push(null, null);
}
getMatches(res);
}
})
}
// Get matches of an accountID
function getMatches(callback) {
// Get 10 matches of an accountID
const getMatches = function (res) {
console.time('getMatches');
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) {
JSONMatches = JSON.parse(body);
const matchsId = JSONMatches.matches.map(x => x.gameId)
let matchsId = [];
for (let i = 0; i < JSONMatches.matches.length; i++) {
matchsId[i] = JSONMatches.matches[i].gameId;
}
Promise.map(matchsId, function (item) { // old: .mapSeries
return apicall(item);
Promise.map(matchsId, function (id) {
return getMatch('match/v4/matches/' + id);
}).then(() => {
console.timeEnd('getMatches');
console.log('Finished');
callback(JSONMatches);
console.log('Finished - Data sent to front');
finalJSON.push(JSONMatches)
res.send(finalJSON);
console.timeEnd('all')
}).catch(err => {
console.log('Error');
console.log(err.statusCode);
console.log('Error Promise');
console.log(err);
});
}
});
}
// Get data of one match
const getMatch = async function (urlApi) {
//console.log(urlApi);
return rp({ url: 'https://euw1.api.riotgames.com/lol/' + urlApi + '?api_key=' + key, json: true }).then(function (obj) {
return addMatchToJSON(obj);
});
}
// Add match to global JSON
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;
}
}
}
const addMatchToJSON = function (obj) {
JSONMatches.matches = JSONMatches.matches.map((match) => match.gameId === obj.gameId ? obj : match);
}