1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! The builder for [`FilesGetUploadUrlExternal`].

use sfr_types as st;

use crate::api::files_get_upload_url_external::FilesGetUploadUrlExternal;

/// The builder for [`FilesGetUploadUrlExternal`].
#[derive(Debug, Default)]
pub struct FilesGetUploadUrlExternalBuilder {
    /// The [`filename`][`st::FilesGetUploadUrlExternalRequest::filename`].
    filename: Option<String>,

    /// The [`length`][`st::FilesGetUploadUrlExternalRequest::length`].
    length: Option<usize>,

    /// The [`alt_txt`][`st::FilesGetUploadUrlExternalRequest::alt_txt`].
    alt_txt: Option<String>,

    /// The [`snippet_type`][`st::FilesGetUploadUrlExternalRequest::snippet_type`].
    snippet_type: Option<String>,
}

impl FilesGetUploadUrlExternalBuilder {
    /// The constructor.
    pub fn new() -> Self {
        Self::default()
    }

    /// Builds [`FilesGetUploadUrlExternal`].
    pub fn build(self) -> Result<FilesGetUploadUrlExternal, st::Error> {
        let filename = self
            .filename
            .ok_or_else(|| st::Error::required_value_is_missing(&["filename"]))?;

        let length = self
            .length
            .ok_or_else(|| st::Error::required_value_is_missing(&["length"]))?;

        let result = st::FilesGetUploadUrlExternalRequest {
            filename,
            length,
            alt_txt: self.alt_txt,
            snippet_type: self.snippet_type,
        };

        Ok(result.into())
    }

    /// Sets [`filename`][`st::FilesGetUploadUrlExternalRequest::filename`].
    pub fn filename(mut self, filename: Option<String>) -> Self {
        self.filename = filename;
        self
    }

    /// Sets [`length`][`st::FilesGetUploadUrlExternalRequest::length`].
    pub fn length(mut self, length: Option<usize>) -> Self {
        self.length = length;
        self
    }

    /// Sets [`alt_txt`][`st::FilesGetUploadUrlExternalRequest::alt_txt`].
    pub fn alt_txt(mut self, alt_txt: Option<String>) -> Self {
        self.alt_txt = alt_txt;
        self
    }

    /// Sets [`snippet_type`][`st::FilesGetUploadUrlExternalRequest::snippet_type`].
    pub fn snippet_type(mut self, snippet_type: Option<String>) -> Self {
        self.snippet_type = snippet_type;
        self
    }
}