sfr_slack_api/builder/
files_remote_add.rs

1//! The builder for [`FilesRemoteAdd`].
2
3use sfr_types as st;
4
5use crate::api::files_remote_add::FilesRemoteAdd;
6
7/// The builder for [`FilesRemoteAdd`].
8#[derive(Debug, Default)]
9pub struct FilesRemoteAddBuilder {
10    /// The [`external_id`][`st::FilesRemoteAddRequest::external_id`].
11    external_id: Option<String>,
12
13    /// The [`external_url`][`st::FilesRemoteAddRequest::external_url`].
14    external_url: Option<String>,
15
16    /// The [`title`][`st::FilesRemoteAddRequest::title`].
17    title: Option<String>,
18
19    /// The [`filetype`][`st::FilesRemoteAddRequest::filetype`].
20    filetype: Option<String>,
21
22    /// The [`indexable_file_contents`][`st::FilesRemoteAddRequest::indexable_file_contents`].
23    indexable_file_contents: Option<String>,
24
25    /// The [`preview_image`][`st::FilesRemoteAddRequest::preview_image`].
26    preview_image: Option<String>,
27}
28
29impl FilesRemoteAddBuilder {
30    /// The constructor.
31    pub fn new() -> Self {
32        Self::default()
33    }
34
35    /// Builds [`FilesRemoteAdd`].
36    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    /// Sets [`external_id`][`st::FilesRemoteAddRequest::external_id`].
60    pub fn external_id(mut self, external_id: String) -> Self {
61        self.external_id = Some(external_id);
62        self
63    }
64
65    /// Sets [`external_url`][`st::FilesRemoteAddRequest::external_url`].
66    pub fn external_url(mut self, external_url: String) -> Self {
67        self.external_url = Some(external_url);
68        self
69    }
70
71    /// Sets [`title`][`st::FilesRemoteAddRequest::title`].
72    pub fn title(mut self, title: String) -> Self {
73        self.title = Some(title);
74        self
75    }
76
77    /// Sets [`filetype`][`st::FilesRemoteAddRequest::filetype`].
78    pub fn filetype(mut self, filetype: Option<String>) -> Self {
79        self.filetype = filetype;
80        self
81    }
82
83    /// Sets [`indexable_file_contents`][`st::FilesRemoteAddRequest::indexable_file_contents`].
84    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    /// Sets [`preview_image`][`st::FilesRemoteAddRequest::preview_image`].
90    pub fn preview_image(mut self, preview_image: Option<String>) -> Self {
91        self.preview_image = preview_image;
92        self
93    }
94}