sfr_types/block/file.rs
1//! File block.
2//!
3//! <https://api.slack.com/reference/block-kit/blocks#file>
4
5use crate::{BlockId, ExternalId};
6use derive_new::new;
7use serde::Serialize;
8
9/// File block.
10///
11/// <https://api.slack.com/reference/block-kit/blocks#file>
12#[derive(Serialize, Debug, Clone, new)]
13#[serde(rename_all = "snake_case")]
14pub struct FileBlock {
15 /// The external unique ID for this file.
16 pub external_id: ExternalId,
17
18 /// At the moment, `source` will always be `remote` for a remote file.
19 #[new(default)]
20 pub source: FileBlockSource,
21
22 /// A unique identifier for a block.
23 #[new(value = "None")]
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub block_id: Option<BlockId>,
26}
27
28/// A `source` field in File block.
29///
30/// <https://api.slack.com/reference/block-kit/blocks#file_fields>
31#[derive(Serialize, Debug, Clone, Default)]
32#[serde(rename_all = "snake_case")]
33pub enum FileBlockSource {
34 /// The `source` will always be `remote`.
35 #[default]
36 Remote,
37}