use crate::client::HypixelClient;
use crate::error::Result;
use crate::models::skyblock::*;
impl HypixelClient {
pub async fn skyblock_profiles(&self, uuid: &str) -> Result<Vec<SkyBlockProfile>> {
let resp: ProfilesResponse = self
.request("/v2/skyblock/profiles", &[("uuid", uuid)], true)
.await?;
Ok(resp.profiles.unwrap_or_default())
}
pub async fn skyblock_profile(&self, profile: &str) -> Result<Option<SkyBlockProfile>> {
let resp: ProfileResponse = self
.request("/v2/skyblock/profile", &[("profile", profile)], true)
.await?;
Ok(resp.profile)
}
pub async fn skyblock_museum(&self, profile: &str) -> Result<Option<Museum>> {
let resp: MuseumResponse = self
.request("/v2/skyblock/museum", &[("profile", profile)], true)
.await?;
Ok(resp.profile)
}
pub async fn skyblock_garden(&self, profile: &str) -> Result<Option<Garden>> {
let resp: GardenResponse = self
.request("/v2/skyblock/garden", &[("profile", profile)], true)
.await?;
Ok(resp.garden)
}
pub async fn skyblock_bingo(&self, uuid: &str) -> Result<Vec<serde_json::Value>> {
let resp: BingoEventsResponse = self
.request("/v2/skyblock/bingo", &[("uuid", uuid)], true)
.await?;
Ok(resp.events)
}
pub async fn skyblock_auction(
&self,
uuid: Option<&str>,
player: Option<&str>,
profile: Option<&str>,
) -> Result<Vec<SkyBlockAuction>> {
let mut query = Vec::new();
if let Some(v) = uuid {
query.push(("uuid", v));
}
if let Some(v) = player {
query.push(("player", v));
}
if let Some(v) = profile {
query.push(("profile", v));
}
let resp: AuctionResponse = self.request("/v2/skyblock/auction", &query, true).await?;
Ok(resp.auctions)
}
pub async fn skyblock_auctions(&self, page: u32) -> Result<AuctionsPage> {
let page = page.to_string();
self.request("/v2/skyblock/auctions", &[("page", &page)], false)
.await
}
pub async fn skyblock_auctions_ended(&self) -> Result<Vec<EndedAuction>> {
let resp: EndedAuctionsResponse = self
.request("/v2/skyblock/auctions_ended", &[], false)
.await?;
Ok(resp.auctions)
}
pub async fn skyblock_bazaar(&self) -> Result<Bazaar> {
self.request("/v2/skyblock/bazaar", &[], false).await
}
pub async fn skyblock_firesales(&self) -> Result<Vec<FireSale>> {
let resp: FireSalesResponse = self.request("/v2/skyblock/firesales", &[], false).await?;
Ok(resp.sales)
}
pub async fn skyblock_news(&self) -> Result<Vec<NewsItem>> {
let resp: NewsResponse = self.request("/v2/skyblock/news", &[], false).await?;
Ok(resp.items)
}
}