slack_rust/block/
block_file.rs

1//! Displays a [remote file](https://api.slack.com/messaging/files/remote).
2
3use serde::{Deserialize, Serialize};
4use serde_with::skip_serializing_none;
5
6/// Displays a remote file.   
7/// See: <https://api.slack.com/reference/block-kit/blocks#file>
8#[skip_serializing_none]
9#[derive(Deserialize, Serialize, Debug, Default, PartialEq)]
10pub struct FileBlock {
11    pub external_id: String,
12    pub source: String,
13    pub block_id: Option<String>,
14}
15
16impl FileBlock {
17    pub fn builder(external_id: String, source: String) -> FileBlockBuilder {
18        FileBlockBuilder::new(external_id, source)
19    }
20}
21
22#[derive(Debug, Default)]
23pub struct FileBlockBuilder {
24    pub external_id: String,
25    pub source: String,
26    pub block_id: Option<String>,
27}
28
29impl FileBlockBuilder {
30    pub fn new(external_id: String, source: String) -> FileBlockBuilder {
31        FileBlockBuilder {
32            external_id,
33            source,
34            ..Default::default()
35        }
36    }
37    pub fn block_id(mut self, block_id: String) -> FileBlockBuilder {
38        self.block_id = Some(block_id);
39        self
40    }
41    pub fn build(self) -> FileBlockBuilder {
42        FileBlockBuilder {
43            external_id: self.external_id,
44            source: self.source,
45            block_id: self.block_id,
46        }
47    }
48}