mirror of
https://github.com/maxswa/osrs-json-hiscores.git
synced 2025-10-15 10:19:04 +00:00
Refactor gamemode inference in getStats
This commit is contained in:
100
src/hiscores.ts
100
src/hiscores.ts
@@ -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 = [];
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user