Updated hypixel api wrapper

This commit is contained in:
2024-10-16 10:58:13 +02:00
parent 775b1cf528
commit e52e2dcb61
3 changed files with 45 additions and 44 deletions

View File

@@ -1,9 +1,7 @@
// dprint-ignore-file // dprint-ignore-file
export interface IGuild { export interface IGuild {
data: { success: boolean
success: boolean guild: IGuildData
guild: IGuildData
}
} }
export interface IGuildData { export interface IGuildData {

View File

@@ -1,9 +1,7 @@
// dprint-ignore-file // dprint-ignore-file
export interface IPlayer { export interface IPlayer {
data: { success: boolean
success: boolean player: IPlayerData
player: IPlayerData
}
} }
export interface IPlayerData { export interface IPlayerData {

View File

@@ -1,4 +1,4 @@
import fetch from "axios" import axios from "axios"
import { IPlayer, IPlayerData } from "~/interfaces" import { IPlayer, IPlayerData } from "~/interfaces"
import { IGuild, IGuildData } from "~/interfaces" import { IGuild, IGuildData } from "~/interfaces"
import env from "~/utils/Env.js" import env from "~/utils/Env.js"
@@ -10,25 +10,21 @@ const guild = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/" const minotar = "https://minotar.net/helm/"
type GuildQueryType = "player" | "name" | "id" type GuildQueryType = "player" | "name" | "id"
type Profile = { type UUIDData = {
data: { id: string
id: string name: string
name: string
}
} }
type Profile2 = { type IGNData = {
data: { id: string
id: string name: string
name: string properties: { name: string, value: string }[]
properties: { name: string, value: string }[] profileActions: []
profileActions: []
}
} }
async function getUUID(ign: string): Promise<string | null> { async function getUUID(ign: string): Promise<string | null> {
try { try {
const req: Profile = await fetch(mojang + ign) const req = await axios.get<UUIDData>(mojang + ign)
return req.data.id return req.data.id
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) { } catch (err) {
@@ -38,7 +34,7 @@ async function getUUID(ign: string): Promise<string | null> {
async function getIGN(uuid: string): Promise<string | null> { async function getIGN(uuid: string): Promise<string | null> {
try { try {
const req: Profile2 = await fetch(mojanguuid + uuid) const req = await axios.get<IGNData>(mojanguuid + uuid)
return req.data.name return req.data.name
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) { } catch (err) {
@@ -47,39 +43,48 @@ async function getIGN(uuid: string): Promise<string | null> {
} }
async function getPlayer(uuid: string): Promise<IPlayerData | null> { async function getPlayer(uuid: string): Promise<IPlayerData | null> {
const playerReq: IPlayer = await fetch(hypixel, { try {
params: { const req = await axios.get<IPlayer>(hypixel, {
uuid: uuid params: {
}, uuid: uuid
headers: { },
"API-Key": apikey headers: {
"API-Key": apikey
}
})
if (!req.data.player) {
return null
} }
})
if (!playerReq.data.player) { return req.data.player
// eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) {
return null return null
} }
return playerReq.data.player
} }
async function getGuild(query: string, type?: GuildQueryType): Promise<IGuildData | null> { async function getGuild(query: string, type?: GuildQueryType): Promise<IGuildData | null> {
const reqType = type ? type : "player" const reqType = type ? type : "player"
const guildReq: IGuild = await fetch(guild, { try {
params: { const req = await axios.get<IGuild>(guild, {
[reqType]: query params: {
}, [reqType]: query
headers: { },
"API-Key": apikey headers: {
} "API-Key": apikey
}) }
})
if (!guildReq.data.guild) { if (!req.data.guild) {
return null
}
return req.data.guild
// eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) {
return null return null
} }
return guildReq.data.guild
} }
async function getHeadURL(ign: string): Promise<string | null> { async function getHeadURL(ign: string): Promise<string | null> {