diff options
author | mat <27899617+mat-1@users.noreply.github.com> | 2021-02-14 19:01:27 -0600 |
---|---|---|
committer | mat <27899617+mat-1@users.noreply.github.com> | 2021-02-14 19:01:27 -0600 |
commit | fd2348bf16c55422ec664e6677b636998eccc71c (patch) | |
tree | b729aeba3e4f6c332244d5ae263347a9a186a401 /src/cleaners | |
parent | 8a21158dfaa6392ca6f8d7d8c218c69689236765 (diff) | |
download | skyblock-api-fd2348bf16c55422ec664e6677b636998eccc71c.tar.gz skyblock-api-fd2348bf16c55422ec664e6677b636998eccc71c.tar.bz2 skyblock-api-fd2348bf16c55422ec664e6677b636998eccc71c.zip |
fix special cases
some users dont have a rank, and some users dont have skyblock profiles
Diffstat (limited to 'src/cleaners')
-rw-r--r-- | src/cleaners/player.ts | 14 | ||||
-rw-r--r-- | src/cleaners/rank.ts | 16 | ||||
-rw-r--r-- | src/cleaners/skyblock/member.ts | 2 | ||||
-rw-r--r-- | src/cleaners/skyblock/profiles.ts | 4 | ||||
-rw-r--r-- | src/cleaners/socialmedia.ts | 6 |
5 files changed, 23 insertions, 19 deletions
diff --git a/src/cleaners/player.ts b/src/cleaners/player.ts index f49d72c..f4cbb18 100644 --- a/src/cleaners/player.ts +++ b/src/cleaners/player.ts @@ -1,9 +1,9 @@ -import { CleanSocialMedia, parseSocialMedia } from './socialmedia' -import { CleanRank, parseRank } from './rank' +import { cleanPlayerSkyblockProfiles } from './skyblock/profiles' +import { cleanSocialMedia, CleanSocialMedia } from './socialmedia' +import { CleanBasicProfile } from './skyblock/profile' +import { cleanRank, CleanRank } from './rank' import { HypixelPlayer } from '../hypixelApi' import { undashUuid } from '../util' -import { CleanBasicProfile } from './skyblock/profile' -import { cleanPlayerSkyblockProfiles } from './skyblock/profiles' export interface CleanBasicPlayer { uuid: string @@ -21,8 +21,8 @@ export async function cleanPlayerResponse(data: HypixelPlayer): Promise<CleanPla return { uuid: undashUuid(data.uuid), username: data.displayname, - rank: parseRank(data), - socials: parseSocialMedia(data.socialMedia), - profiles: cleanPlayerSkyblockProfiles(data.stats.SkyBlock.profiles) + rank: cleanRank(data), + socials: cleanSocialMedia(data), + profiles: cleanPlayerSkyblockProfiles(data.stats?.SkyBlock?.profiles) } } diff --git a/src/cleaners/rank.ts b/src/cleaners/rank.ts index 49520a9..bd39088 100644 --- a/src/cleaners/rank.ts +++ b/src/cleaners/rank.ts @@ -1,5 +1,5 @@ -import { HypixelPlayer } from '../hypixelApi' import { colorCodeFromName, minecraftColorCodes } from '../util' +import { HypixelPlayer } from '../hypixelApi' const rankColors: { [ name: string ]: string } = { 'NONE': '7', @@ -21,7 +21,7 @@ export interface CleanRank { } /** Response cleaning (reformatting to be nicer) */ -export function parseRank({ +export function cleanRank({ packageRank, newPackageRank, monthlyPackageRank, @@ -38,24 +38,28 @@ export function parseRank({ name = colored.replace(/§./g, '').replace(/[\[\]]/g, '') } else { name = rank - || newPackageRank.replace('_PLUS', '+') - || packageRank.replace('_PLUS', '+') + || newPackageRank?.replace('_PLUS', '+') + || packageRank?.replace('_PLUS', '+') || monthlyPackageRank // MVP++ is called Superstar for some reason if (name === 'SUPERSTAR') name = 'MVP++' // YouTube rank is called YouTuber, change this to the proper name else if (name === 'YOUTUBER') name = 'YOUTUBE' + else if (name === undefined) name = 'NONE' - const plusColor = colorCodeFromName(rankPlusColor) + const plusColor = rankPlusColor ? colorCodeFromName(rankPlusColor) : null color = minecraftColorCodes[rankColors[name]] const rankColorPrefix = rankColors[name] ? '§' + rankColors[name] : '' const nameWithoutPlus = name.split('+')[0] const plusesInName = '+'.repeat(name.split('+').length - 1) if (plusColor && plusesInName.length >= 1) colored = `${rankColorPrefix}[${nameWithoutPlus}§${plusColor}${plusesInName}${rankColorPrefix}]` - else + else if (name !== 'NONE') colored = `${rankColorPrefix}[${name}]` + else + // nons don't have a prefix + colored = `${rankColorPrefix}` } return { name, diff --git a/src/cleaners/skyblock/member.ts b/src/cleaners/skyblock/member.ts index 6d419e1..a6bb4c5 100644 --- a/src/cleaners/skyblock/member.ts +++ b/src/cleaners/skyblock/member.ts @@ -11,7 +11,7 @@ import { CleanPlayer } from '../player' import { Bank } from './bank' import { cleanVisitedZones, Zone } from './zones' import { cleanCollections, Collection } from './collections' -import { cleanSlayers, Slayer, SlayerData } from './slayers' +import { cleanSlayers, SlayerData } from './slayers' export interface CleanBasicMember { uuid: string diff --git a/src/cleaners/skyblock/profiles.ts b/src/cleaners/skyblock/profiles.ts index c942a14..0138c0b 100644 --- a/src/cleaners/skyblock/profiles.ts +++ b/src/cleaners/skyblock/profiles.ts @@ -3,7 +3,7 @@ import { CleanBasicProfile, CleanProfile, cleanSkyblockProfileResponseLighter } export function cleanPlayerSkyblockProfiles(rawProfiles: HypixelPlayerStatsSkyBlockProfiles): CleanBasicProfile[] { let profiles: CleanBasicProfile[] = [] - for (const profile of Object.values(rawProfiles)) { + for (const profile of Object.values(rawProfiles ?? {})) { profiles.push({ uuid: profile.profile_id, name: profile.cute_name @@ -16,7 +16,7 @@ export function cleanPlayerSkyblockProfiles(rawProfiles: HypixelPlayerStatsSkyBl /** Convert an array of raw profiles into clean profiles */ export async function cleanSkyblockProfilesResponse(data: any[]): Promise<CleanProfile[]> { const cleanedProfiles: CleanProfile[] = [] - for (const profile of data) { + for (const profile of data ?? []) { let cleanedProfile = await cleanSkyblockProfileResponseLighter(profile) cleanedProfiles.push(cleanedProfile) } diff --git a/src/cleaners/socialmedia.ts b/src/cleaners/socialmedia.ts index c1f9551..c7ab7ef 100644 --- a/src/cleaners/socialmedia.ts +++ b/src/cleaners/socialmedia.ts @@ -5,10 +5,10 @@ export interface CleanSocialMedia { forums: string | null } -export function parseSocialMedia(socialMedia: HypixelPlayerSocialMedia): CleanSocialMedia { +export function cleanSocialMedia(data): CleanSocialMedia { return { - discord: socialMedia?.links?.DISCORD || null, - forums: socialMedia?.links?.HYPIXEL || null + discord: data?.socialMedia?.links?.DISCORD || null, + forums: data?.socialMedia?.links?.HYPIXEL || null } } |