genius_rust/
user.rs

1use serde::{Serialize, Deserialize};
2use std::collections::BTreeMap as Map;
3
4#[derive(Serialize, Deserialize, Debug)]
5pub struct User {
6    /// User api path
7    pub api_path: String,
8    /// User profile photo
9    pub avatar: Map<String, AvatarImage>,
10    /// User header image
11    pub header_image_url: String,
12    /// User role human readable.
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub human_readable_role_for_display: Option<String>,
15    /// User id.
16    pub id: u32,
17    /// User iq.
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub iq: Option<u32>,
20    /// Username.
21    pub login: String,
22    /// User name.
23    pub name: String,
24    /// User role.
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub role_for_display: Option<String>,
27    /// User page url.
28    pub url: String,
29    /// User permissions and interactions.
30    pub current_user_metadata: UserMetadata,
31}
32
33#[derive(Serialize, Deserialize, Debug)]
34pub struct AvatarImage {
35    /// Image url.
36    pub url: String,
37    /// Width and height.
38    pub bounding_box: Map<String, u32>,
39}
40
41#[derive(Serialize, Deserialize, Debug)]
42pub struct UserMetadata {
43    /// Permissions you have.
44    pub permissions: Vec<String>,
45    /// Permissions you don't have.
46    pub excluded_permissions: Vec<String>,
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub interactions: Option<Interactions>,
49}
50
51#[derive(Serialize, Deserialize, Debug)]
52pub struct Interactions {
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub cosign: Option<bool>,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub pyong: Option<bool>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub vote: Option<u32>,
59}