sfr_slack_api/builder/
files_info.rs

1//! The builder for [`FilesInfo`].
2
3use sfr_types as st;
4
5use crate::api::files_info::FilesInfo;
6
7/// The builder for [`FilesInfo`].
8#[derive(Debug, Default)]
9pub struct FilesInfoBuilder {
10    /// The [`file`][`st::FilesInfoRequest::file`].
11    file: Option<String>,
12
13    /// The [`count`][`st::FilesInfoRequest::count`].
14    count: Option<i64>,
15
16    /// The [`cursor`][`st::FilesInfoRequest::cursor`].
17    cursor: Option<String>,
18
19    /// The [`limit`][`st::FilesInfoRequest::limit`].
20    limit: Option<i64>,
21
22    /// The [`page`][`st::FilesInfoRequest::page`].
23    page: Option<i64>,
24}
25
26impl FilesInfoBuilder {
27    /// The constructor.
28    pub fn new() -> Self {
29        Self::default()
30    }
31
32    /// Builds [`FilesInfo`].
33    pub fn build(self) -> Result<FilesInfo, st::Error> {
34        let file = self
35            .file
36            .ok_or_else(|| st::Error::required_value_is_missing(&["file"]))?;
37
38        let result = st::FilesInfoRequest {
39            file,
40            count: self.count,
41            cursor: self.cursor,
42            limit: self.limit,
43            page: self.page,
44        };
45
46        Ok(result.into())
47    }
48
49    /// Sets [`file`][`st::FilesInfoRequest::file`].
50    pub fn file(mut self, file: String) -> Self {
51        self.file = Some(file);
52        self
53    }
54
55    /// Sets [`count`][`st::FilesInfoRequest::count`].
56    pub fn count(mut self, count: Option<i64>) -> Self {
57        self.count = count;
58        self
59    }
60
61    /// Sets [`cursor`][`st::FilesInfoRequest::cursor`].
62    pub fn cursor(mut self, cursor: Option<String>) -> Self {
63        self.cursor = cursor;
64        self
65    }
66
67    /// Sets [`limit`][`st::FilesInfoRequest::limit`].
68    pub fn limit(mut self, limit: Option<i64>) -> Self {
69        self.limit = limit;
70        self
71    }
72
73    /// Sets [`page`][`st::FilesInfoRequest::page`].
74    pub fn page(mut self, page: Option<i64>) -> Self {
75        self.page = page;
76        self
77    }
78}