slack_morphism_models/common/
user.rs

1use crate::common::*;
2
3use rsb_derive::Builder;
4use serde::{Deserialize, Serialize};
5use serde_with::skip_serializing_none;
6
7#[skip_serializing_none]
8#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
9pub struct SlackUser {
10    pub id: SlackUserId,
11    pub team_id: SlackTeamId,
12    pub name: Option<String>,
13    pub locale: Option<SlackLocale>,
14    pub profile: Option<SlackUserProfile>,
15    #[serde(flatten)]
16    pub flags: SlackUserFlags,
17    pub tz: Option<String>,
18    pub tz_label: Option<String>,
19    pub tz_offset: Option<i32>,
20    pub updated: Option<SlackDateTime>,
21    pub deleted: Option<bool>,
22    pub color: Option<SlackColor>,
23    pub real_name: Option<String>,
24}
25
26#[skip_serializing_none]
27#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
28pub struct SlackUserProfile {
29    pub id: Option<SlackUserId>,
30    pub display_name: Option<String>,
31    pub real_name: Option<String>,
32    pub real_name_normalized: Option<String>,
33    pub avatar_hash: Option<SlackAvatarHash>,
34    pub status_text: Option<String>,
35    pub status_expiration: Option<SlackDateTime>,
36    pub status_emoji: Option<SlackEmoji>,
37    pub display_name_normalized: Option<String>,
38    pub email: Option<EmailAddress>,
39    #[serde(flatten)]
40    pub icon: Option<SlackIcon>,
41    pub team: Option<SlackTeamId>,
42}
43
44#[skip_serializing_none]
45#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
46pub struct SlackUserFlags {
47    pub is_admin: Option<bool>,
48    pub is_app_user: Option<bool>,
49    pub is_bot: Option<bool>,
50    pub is_invited_user: Option<bool>,
51    pub is_owner: Option<bool>,
52    pub is_primary_owner: Option<bool>,
53    pub is_restricted: Option<bool>,
54    pub is_stranger: Option<bool>,
55    pub is_ultra_restricted: Option<bool>,
56    pub has_2fa: Option<bool>,
57}
58
59#[skip_serializing_none]
60#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
61pub struct SlackBasicUserInfo {
62    pub id: SlackUserId,
63    pub team_id: Option<SlackTeamId>,
64    pub username: Option<String>,
65}
66
67#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
68pub struct SlackAvatarHash(pub String);