hypixel-sdk 0.2.1

Async client for the Hypixel Public API with typed models and SkyBlock helpers
Documentation
use std::collections::HashMap;

use serde::{Deserialize, Serialize};
use serde_json::Value;

use super::common::JsonObject;

/// A network booster, as returned by `boosters`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Booster {
    #[serde(rename = "_id", default)]
    pub id: String,
    #[serde(rename = "purchaserUuid", default)]
    pub purchaser_uuid: String,
    #[serde(default)]
    pub amount: f64,
    #[serde(rename = "originalLength", default)]
    pub original_length: i64,
    #[serde(default)]
    pub length: i64,
    #[serde(rename = "gameType", default)]
    pub game_type: i32,
    #[serde(rename = "dateActivated", default)]
    pub date_activated: i64,
    #[serde(flatten)]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct BoostersResponse {
    #[serde(default)]
    pub boosters: Vec<Booster>,
}

/// Live player counts across the network, as returned by `counts`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Counts {
    #[serde(rename = "playerCount", default)]
    pub player_count: i64,
    #[serde(default)]
    pub games: HashMap<String, GameCount>,
}

/// Per-game player counts within [`Counts`].
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct GameCount {
    #[serde(default)]
    pub players: i64,
    #[serde(default)]
    pub modes: HashMap<String, i64>,
}

/// Network-wide moderation statistics, as returned by `punishmentstats`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct PunishmentStats {
    #[serde(rename = "watchdog_lastMinute", default)]
    pub watchdog_last_minute: i64,
    #[serde(rename = "watchdog_rollingDaily", default)]
    pub watchdog_rolling_daily: i64,
    #[serde(rename = "watchdog_total", default)]
    pub watchdog_total: i64,
    #[serde(rename = "staff_rollingDaily", default)]
    pub staff_rolling_daily: i64,
    #[serde(rename = "staff_total", default)]
    pub staff_total: i64,
}

/// A single leaderboard entry within a game's leaderboards.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Leaderboard {
    #[serde(default)]
    pub path: String,
    #[serde(default)]
    pub prefix: String,
    #[serde(default)]
    pub title: String,
    #[serde(default)]
    pub location: String,
    #[serde(default)]
    pub count: i64,
    #[serde(default)]
    pub leaders: Vec<String>,
    #[serde(flatten)]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, Deserialize)]
pub(crate) struct LeaderboardsResponse {
    #[serde(default)]
    pub leaderboards: HashMap<String, Vec<Leaderboard>>,
}

/// A Housing house, as returned by the `housing/*` endpoints.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct HousingHouse {
    #[serde(default)]
    pub uuid: String,
    #[serde(default)]
    pub owner: String,
    #[serde(default)]
    pub name: Option<String>,
    #[serde(rename = "createdAt", default)]
    pub created_at: i64,
    #[serde(default)]
    pub players: i64,
    #[serde(default)]
    pub cookies: Value,
    #[serde(flatten)]
    pub extra: JsonObject,
}