artifacts/models/
account_details.rs

1use crate::models;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
5#[cfg_attr(feature = "specta", derive(specta::Type))]
6pub struct AccountDetails {
7    /// Username.
8    #[serde(rename = "username")]
9    pub username: String,
10    /// Member status.
11    #[serde(rename = "member")]
12    pub member: bool,
13    /// Account status.
14    #[serde(rename = "status")]
15    pub status: models::AccountStatus,
16    /// Account badges.
17    #[serde(rename = "badges", skip_serializing_if = "Option::is_none")]
18    pub badges: Option<Vec<serde_json::Value>>,
19    /// Skins owned.
20    #[serde(rename = "skins")]
21    pub skins: Vec<serde_json::Value>,
22    /// Achievement points.
23    #[serde(rename = "achievements_points")]
24    pub achievements_points: i32,
25    /// Banned.
26    #[serde(rename = "banned")]
27    pub banned: bool,
28    /// Ban reason.
29    #[serde(rename = "ban_reason", skip_serializing_if = "Option::is_none")]
30    pub ban_reason: Option<String>,
31}
32
33impl AccountDetails {
34    pub fn new(
35        username: String,
36        member: bool,
37        status: models::AccountStatus,
38        skins: Vec<serde_json::Value>,
39        achievements_points: i32,
40        banned: bool,
41    ) -> AccountDetails {
42        AccountDetails {
43            username,
44            member,
45            status,
46            badges: None,
47            skins,
48            achievements_points,
49            banned,
50            ban_reason: None,
51        }
52    }
53}