sfr_slack_api/builder/
files_remote_add.rs1use sfr_types as st;
4
5use crate::api::files_remote_add::FilesRemoteAdd;
6
7#[derive(Debug, Default)]
9pub struct FilesRemoteAddBuilder {
10 external_id: Option<String>,
12
13 external_url: Option<String>,
15
16 title: Option<String>,
18
19 filetype: Option<String>,
21
22 indexable_file_contents: Option<String>,
24
25 preview_image: Option<String>,
27}
28
29impl FilesRemoteAddBuilder {
30 pub fn new() -> Self {
32 Self::default()
33 }
34
35 pub fn build(self) -> Result<FilesRemoteAdd, st::Error> {
37 let external_id = self
38 .external_id
39 .ok_or_else(|| st::Error::required_value_is_missing(&["external_id"]))?;
40 let external_url = self
41 .external_url
42 .ok_or_else(|| st::Error::required_value_is_missing(&["external_url"]))?;
43 let title = self
44 .title
45 .ok_or_else(|| st::Error::required_value_is_missing(&["title"]))?;
46
47 let result = st::FilesRemoteAddRequest {
48 external_id,
49 external_url,
50 title,
51 filetype: self.filetype,
52 indexable_file_contents: self.indexable_file_contents,
53 preview_image: self.preview_image,
54 };
55
56 Ok(result.into())
57 }
58
59 pub fn external_id(mut self, external_id: String) -> Self {
61 self.external_id = Some(external_id);
62 self
63 }
64
65 pub fn external_url(mut self, external_url: String) -> Self {
67 self.external_url = Some(external_url);
68 self
69 }
70
71 pub fn title(mut self, title: String) -> Self {
73 self.title = Some(title);
74 self
75 }
76
77 pub fn filetype(mut self, filetype: Option<String>) -> Self {
79 self.filetype = filetype;
80 self
81 }
82
83 pub fn indexable_file_contents(mut self, indexable_file_contents: Option<String>) -> Self {
85 self.indexable_file_contents = indexable_file_contents;
86 self
87 }
88
89 pub fn preview_image(mut self, preview_image: Option<String>) -> Self {
91 self.preview_image = preview_image;
92 self
93 }
94}