slack_morphism_models/files/
mod.rs1use crate::*;
2
3use rsb_derive::Builder;
4use rvstruct::*;
5use serde::{Deserialize, Serialize};
6use serde_with::skip_serializing_none;
7use url::Url;
8
9#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
10pub struct SlackFileId(pub String);
11
12#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
13pub struct SlackFileType(pub String);
14
15#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
16pub struct SlackFilePrettyType(pub String);
17
18#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
19pub struct SlackFileExternalType(pub String);
20
21#[skip_serializing_none]
22#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
23pub struct SlackFile {
24 pub id: SlackFileId,
25 pub created: SlackDateTime,
26 pub timestamp: SlackDateTime,
27 pub name: String,
28 pub title: Option<String>,
29 pub mimetype: Option<SlackMimeType>,
30 pub filetype: Option<SlackFileType>,
31 pub pretty_type: Option<SlackFilePrettyType>,
32 pub external_type: Option<SlackFileExternalType>,
33 pub user: Option<SlackUserId>,
34 pub username: Option<String>,
35 pub url_private: Option<Url>,
36 pub url_private_download: Option<Url>,
37 pub permalink: Option<Url>,
38 pub permalink_public: Option<Url>,
39 pub reactions: Option<Vec<SlackReaction>>,
40 #[serde(flatten)]
41 pub flags: SlackFileFlags,
42}
43
44#[skip_serializing_none]
45#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
46pub struct SlackFileFlags {
47 pub editable: Option<bool>,
48 pub is_external: Option<bool>,
49 pub is_public: Option<bool>,
50 pub public_url_shared: Option<bool>,
51 pub display_as_bot: Option<bool>,
52 pub is_starred: Option<bool>,
53 pub has_rich_preview: Option<bool>,
54}