Skip to main content

librus_rs/structs/
me.rs

1//! Current user data types.
2
3use serde::Deserialize;
4
5/// User account information.
6#[derive(Debug, Deserialize)]
7pub struct Account {
8    /// Account ID.
9    #[serde(rename = "Id")]
10    pub id: u32,
11    /// Associated user ID.
12    #[serde(rename = "UserId")]
13    pub user_id: u32,
14    /// First name.
15    #[serde(rename = "FirstName")]
16    pub first_name: String,
17    /// Last name.
18    #[serde(rename = "LastName")]
19    pub last_name: String,
20    /// Email address.
21    #[serde(rename = "Email")]
22    pub email: String,
23    /// User group ID.
24    #[serde(rename = "GroupId")]
25    pub group_id: u32,
26    /// Whether the account is active.
27    #[serde(rename = "IsActive")]
28    pub is_active: bool,
29    /// Login username.
30    #[serde(rename = "Login")]
31    pub login: String,
32    /// Whether this is a premium account.
33    #[serde(rename = "IsPremium")]
34    pub is_premium: bool,
35    /// Whether this is a premium demo account.
36    #[serde(rename = "IsPremiumDemo")]
37    pub is_premium_demo: bool,
38    /// Premium expiration date timestamp.
39    #[serde(rename = "ExpiredPremiumDate")]
40    pub expired_premium_date: Option<u64>,
41    /// List of premium add-ons.
42    #[serde(rename = "PremiumAddons")]
43    pub premium_addons: Vec<String>,
44}
45
46/// Basic user profile.
47#[derive(Debug, Deserialize)]
48pub struct User {
49    /// First name.
50    #[serde(rename = "FirstName")]
51    pub first_name: String,
52    /// Last name.
53    #[serde(rename = "LastName")]
54    pub last_name: String,
55}
56
57/// Class reference.
58#[derive(Debug, Deserialize)]
59pub struct Class {
60    /// Class ID.
61    #[serde(rename = "Id")]
62    pub id: u32,
63    /// API URL for the class.
64    #[serde(rename = "Url")]
65    pub url: String,
66}
67
68#[derive(Debug, Deserialize)]
69pub struct Resource {
70    #[serde(rename = "Url")]
71    pub url: String,
72}
73
74#[derive(Debug, Deserialize)]
75pub struct Resources {
76    #[serde(rename = "..")]
77    pub url: Resource,
78}
79
80/// Current user information combining account, profile, and class.
81#[derive(Debug, Deserialize)]
82pub struct Me {
83    /// Account details.
84    #[serde(rename = "Account")]
85    pub account: Account,
86    /// Session refresh interval.
87    #[serde(rename = "Refresh")]
88    pub refresh: u32,
89    /// User profile.
90    #[serde(rename = "User")]
91    pub user: User,
92    /// Class the user belongs to.
93    #[serde(rename = "Class")]
94    pub class: Class,
95}
96
97/// Response containing current user information.
98#[derive(Debug, Deserialize)]
99pub struct ResponseMe {
100    /// Current user data.
101    #[serde(rename = "Me")]
102    pub me: Me,
103    /// Related API resources.
104    #[serde(rename = "Resources")]
105    pub resources: Resources,
106    /// API URL for this response.
107    #[serde(rename = "Url")]
108    pub url: String,
109}