use crate::client::HypixelClient;
use crate::error::Result;
use crate::models::*;
impl HypixelClient {
pub async fn player(&self, uuid: &str) -> Result<Option<Player>> {
let resp: PlayerResponse = self.request("/v2/player", &[("uuid", uuid)], true).await?;
Ok(resp.player)
}
pub async fn recent_games(&self, uuid: &str) -> Result<Vec<RecentGame>> {
let resp: RecentGamesResponse = self
.request("/v2/recentgames", &[("uuid", uuid)], true)
.await?;
Ok(resp.games)
}
pub async fn status(&self, uuid: &str) -> Result<Session> {
let resp: StatusResponse = self.request("/v2/status", &[("uuid", uuid)], true).await?;
Ok(resp.session)
}
pub async fn guild_by_id(&self, id: &str) -> Result<Option<Guild>> {
self.guild(&[("id", id)]).await
}
pub async fn guild_by_player(&self, uuid: &str) -> Result<Option<Guild>> {
self.guild(&[("player", uuid)]).await
}
pub async fn guild_by_name(&self, name: &str) -> Result<Option<Guild>> {
self.guild(&[("name", name)]).await
}
async fn guild(&self, query: &[(&str, &str)]) -> Result<Option<Guild>> {
let resp: GuildResponse = self.request("/v2/guild", query, true).await?;
Ok(resp.guild)
}
pub async fn boosters(&self) -> Result<Vec<Booster>> {
let resp: BoostersResponse = self.request("/v2/boosters", &[], true).await?;
Ok(resp.boosters)
}
pub async fn counts(&self) -> Result<Counts> {
self.request("/v2/counts", &[], true).await
}
pub async fn leaderboards(
&self,
) -> Result<std::collections::HashMap<String, Vec<Leaderboard>>> {
let resp: LeaderboardsResponse = self.request("/v2/leaderboards", &[], true).await?;
Ok(resp.leaderboards)
}
pub async fn punishment_stats(&self) -> Result<PunishmentStats> {
self.request("/v2/punishmentstats", &[], true).await
}
pub async fn housing_active(&self) -> Result<Vec<HousingHouse>> {
self.request("/v2/housing/active", &[], true).await
}
pub async fn housing_house(&self, house: &str) -> Result<HousingHouse> {
self.request("/v2/housing/house", &[("house", house)], true)
.await
}
pub async fn housing_houses(&self, player: &str) -> Result<Vec<HousingHouse>> {
self.request("/v2/housing/houses", &[("player", player)], true)
.await
}
}