Refactor gamemode inference in getStats

This commit is contained in:
Max
2019-06-14 16:03:45 -04:00
parent bd0c221bf7
commit 9ea736e3ff
2 changed files with 33 additions and 68 deletions

View File

@@ -20,6 +20,8 @@ import {
MODES, MODES,
getPlayerTableURL, getPlayerTableURL,
getHiscoresPageURL, getHiscoresPageURL,
GAMEMODES,
OTHER,
} from './utils'; } from './utils';
export async function getStats( export async function getStats(
@@ -45,40 +47,21 @@ export async function getStats(
getRSNFormat(rsn), getRSNFormat(rsn),
]); ]);
let gameMode: Gamemode = 'main';
const [ironRes, hcRes, ultRes, formattedName] = otherResponses; const [ironRes, hcRes, ultRes, formattedName] = otherResponses;
if (ironRes.status === 200) {
if (hcRes.status === 200) {
gameMode = 'hc';
} else if (ultRes.status === 200) {
gameMode = 'ult';
} else {
gameMode = 'iron';
}
} else {
gameMode = 'main';
}
const player: Player = { const player: Player = {
rsn, rsn: formattedName,
mode: gameMode, mode: 'main',
dead: false, dead: false,
deulted: false,
deironed: false, deironed: false,
}; };
player.main = parseStats(mainRes.data);
switch (gameMode) { if (ironRes.status === 200) {
case 'iron': player.iron = parseStats(ironRes.data);
player.main = parseStats(mainRes.data); if (hcRes.status === 200) {
player.iron = parseStats(ironRes.data); player.mode = 'hc';
if (player.main.skills.overall.xp !== player.iron.skills.overall.xp) {
player.deironed = true;
player.mode = 'main';
}
break;
case 'hc':
player.main = parseStats(mainRes.data);
player.iron = parseStats(ironRes.data);
player.hc = parseStats(hcRes.data); player.hc = parseStats(hcRes.data);
if (player.iron.skills.overall.xp !== player.hc.skills.overall.xp) { if (player.iron.skills.overall.xp !== player.hc.skills.overall.xp) {
player.dead = true; player.dead = true;
@@ -88,16 +71,24 @@ export async function getStats(
player.deironed = true; player.deironed = true;
player.mode = 'main'; player.mode = 'main';
} }
break; } else if (ultRes.status === 200) {
case 'ult': player.mode = 'ult';
player.main = parseStats(mainRes.data);
player.iron = parseStats(ironRes.data);
player.ult = parseStats(ultRes.data); player.ult = parseStats(ultRes.data);
if (player.iron.skills.overall.xp !== player.ult.skills.overall.xp) {
player.deulted = true;
player.mode = 'iron';
}
if (player.main.skills.overall.xp !== player.iron.skills.overall.xp) { if (player.main.skills.overall.xp !== player.iron.skills.overall.xp) {
player.deironed = true; player.deironed = true;
player.mode = 'main'; player.mode = 'main';
} }
break; } else {
player.mode = 'iron';
if (player.main.skills.overall.xp !== player.iron.skills.overall.xp) {
player.deironed = true;
player.mode = 'main';
}
}
} }
return player; return player;
@@ -112,6 +103,7 @@ export async function getStats(
rsn, rsn,
mode, mode,
dead: false, dead: false,
deulted: false,
deironed: false, deironed: false,
[mode]: parseStats(response.data), [mode]: parseStats(response.data),
}; };
@@ -119,46 +111,18 @@ export async function getStats(
} }
} }
// /** // export async function getHiscores(
// * Gets a hiscore page.
// *
// * Scrapes OSRS hiscores and converts to objects.
// *
// * @access public
// *
// * @param {string} mode The game mode.
// * @param {string} [category] The category of hiscores.
// * @param {number} [page] The page of players.
// *
// * @returns {Object[]} Array of player objects.
// */
// async function getHiscores(mode, category = 'overall', page = 1) {
// if (
// !validModes.includes(mode.toLowerCase()) ||
// mode.toLowerCase() === 'full'
// ) {
// throw Error('Invalid game mode');
// } else if (!Number.isInteger(page) || page < 1) {
// throw Error('Page must be an integer greater than 0');
// } else if (
// !hiscores.skills.includes(category.toLowerCase()) &&
// !hiscores.other.includes(category.toLowerCase())
// ) {
// throw Error('Invalid category');
// } else {
// return await getHiscoresPage(
// mode.toLowerCase(),
// category.toLowerCase(),
// page
// );
// }
// }
// async function getHiscoresPage(
// mode: Gamemode, // mode: Gamemode,
// category: Category, // category: Category,
// page: number // page: number
// ) { // ) {
// if (GAMEMODES.includes(mode) || mode.toLowerCase() === 'full') {
// throw Error('Invalid game mode');
// } else if (!Number.isInteger(page) || page < 1) {
// throw Error('Page must be an integer greater than 0');
// } else if ([...SKILLS, ...OTHER].includes(category)) {
// throw Error('Invalid category');
// }
// const url = getHiscoresPageURL(mode, category, page); // const url = getHiscoresPageURL(mode, category, page);
// const players = []; // const players = [];

View File

@@ -82,5 +82,6 @@ export interface Player extends Modes {
rsn: string; rsn: string;
mode: Gamemode; mode: Gamemode;
dead: boolean; dead: boolean;
deulted: boolean;
deironed: boolean; deironed: boolean;
} }