1use serde::{Serialize, Deserialize};
2use std::collections::BTreeMap as Map;
3
4#[derive(Serialize, Deserialize, Debug)]
5pub struct User {
6 pub api_path: String,
8 pub avatar: Map<String, AvatarImage>,
10 pub header_image_url: String,
12 #[serde(skip_serializing_if = "Option::is_none")]
14 pub human_readable_role_for_display: Option<String>,
15 pub id: u32,
17 #[serde(skip_serializing_if = "Option::is_none")]
19 pub iq: Option<u32>,
20 pub login: String,
22 pub name: String,
24 #[serde(skip_serializing_if = "Option::is_none")]
26 pub role_for_display: Option<String>,
27 pub url: String,
29 pub current_user_metadata: UserMetadata,
31}
32
33#[derive(Serialize, Deserialize, Debug)]
34pub struct AvatarImage {
35 pub url: String,
37 pub bounding_box: Map<String, u32>,
39}
40
41#[derive(Serialize, Deserialize, Debug)]
42pub struct UserMetadata {
43 pub permissions: Vec<String>,
45 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}