1use std::fmt;
2use serde::{Serialize, Deserialize};
3
4#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct User {
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub display_name: Option<String>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub kind: Option<String>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub me: Option<bool>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub permission_id: Option<String>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
30 pub email_address: Option<String>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub photo_link: Option<String>,
35}
36
37impl fmt::Display for User {
38 fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
39 let json = serde_json::to_string_pretty(&self)
40 .unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
41
42 write!(f, "{}", json)
43 }
44}
45
46impl User {
47 pub fn new() -> Self {
49 Self { ..Default::default() }
50 }
51}