Skip to main content

hypixel/models/
misc.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use super::common::JsonObject;
7
8/// A network booster, as returned by `boosters`.
9#[derive(Debug, Clone, Deserialize, Serialize)]
10pub struct Booster {
11    #[serde(rename = "_id", default)]
12    pub id: String,
13    #[serde(rename = "purchaserUuid", default)]
14    pub purchaser_uuid: String,
15    #[serde(default)]
16    pub amount: f64,
17    #[serde(rename = "originalLength", default)]
18    pub original_length: i64,
19    #[serde(default)]
20    pub length: i64,
21    #[serde(rename = "gameType", default)]
22    pub game_type: i32,
23    #[serde(rename = "dateActivated", default)]
24    pub date_activated: i64,
25    #[serde(flatten)]
26    pub extra: JsonObject,
27}
28
29#[derive(Debug, Clone, Deserialize)]
30pub(crate) struct BoostersResponse {
31    #[serde(default)]
32    pub boosters: Vec<Booster>,
33}
34
35/// Live player counts across the network, as returned by `counts`.
36#[derive(Debug, Clone, Deserialize, Serialize)]
37pub struct Counts {
38    #[serde(rename = "playerCount", default)]
39    pub player_count: i64,
40    #[serde(default)]
41    pub games: HashMap<String, GameCount>,
42}
43
44/// Per-game player counts within [`Counts`].
45#[derive(Debug, Clone, Deserialize, Serialize)]
46pub struct GameCount {
47    #[serde(default)]
48    pub players: i64,
49    #[serde(default)]
50    pub modes: HashMap<String, i64>,
51}
52
53/// Network-wide moderation statistics, as returned by `punishmentstats`.
54#[derive(Debug, Clone, Deserialize, Serialize)]
55pub struct PunishmentStats {
56    #[serde(rename = "watchdog_lastMinute", default)]
57    pub watchdog_last_minute: i64,
58    #[serde(rename = "watchdog_rollingDaily", default)]
59    pub watchdog_rolling_daily: i64,
60    #[serde(rename = "watchdog_total", default)]
61    pub watchdog_total: i64,
62    #[serde(rename = "staff_rollingDaily", default)]
63    pub staff_rolling_daily: i64,
64    #[serde(rename = "staff_total", default)]
65    pub staff_total: i64,
66}
67
68/// A single leaderboard entry within a game's leaderboards.
69#[derive(Debug, Clone, Deserialize, Serialize)]
70pub struct Leaderboard {
71    #[serde(default)]
72    pub path: String,
73    #[serde(default)]
74    pub prefix: String,
75    #[serde(default)]
76    pub title: String,
77    #[serde(default)]
78    pub location: String,
79    #[serde(default)]
80    pub count: i64,
81    #[serde(default)]
82    pub leaders: Vec<String>,
83    #[serde(flatten)]
84    pub extra: JsonObject,
85}
86
87#[derive(Debug, Clone, Deserialize)]
88pub(crate) struct LeaderboardsResponse {
89    #[serde(default)]
90    pub leaderboards: HashMap<String, Vec<Leaderboard>>,
91}
92
93/// A Housing house, as returned by the `housing/*` endpoints.
94#[derive(Debug, Clone, Deserialize, Serialize)]
95pub struct HousingHouse {
96    #[serde(default)]
97    pub uuid: String,
98    #[serde(default)]
99    pub owner: String,
100    #[serde(default)]
101    pub name: Option<String>,
102    #[serde(rename = "createdAt", default)]
103    pub created_at: i64,
104    #[serde(default)]
105    pub players: i64,
106    #[serde(default)]
107    pub cookies: Value,
108    #[serde(flatten)]
109    pub extra: JsonObject,
110}