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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
//! The builder for [`FilesRemoteAdd`].
use sfr_types as st;
use crate::api::files_remote_add::FilesRemoteAdd;
/// The builder for [`FilesRemoteAdd`].
#[derive(Debug, Default)]
pub struct FilesRemoteAddBuilder {
/// The [`external_id`][`st::FilesRemoteAddRequest::external_id`].
external_id: Option<String>,
/// The [`external_url`][`st::FilesRemoteAddRequest::external_url`].
external_url: Option<String>,
/// The [`title`][`st::FilesRemoteAddRequest::title`].
title: Option<String>,
/// The [`filetype`][`st::FilesRemoteAddRequest::filetype`].
filetype: Option<String>,
/// The [`indexable_file_contents`][`st::FilesRemoteAddRequest::indexable_file_contents`].
indexable_file_contents: Option<String>,
/// The [`preview_image`][`st::FilesRemoteAddRequest::preview_image`].
preview_image: Option<String>,
}
impl FilesRemoteAddBuilder {
/// The constructor.
pub fn new() -> Self {
Self::default()
}
/// Builds [`FilesRemoteAdd`].
pub fn build(self) -> Result<FilesRemoteAdd, st::Error> {
let external_id = self
.external_id
.ok_or_else(|| st::Error::required_value_is_missing(&["external_id"]))?;
let external_url = self
.external_url
.ok_or_else(|| st::Error::required_value_is_missing(&["external_url"]))?;
let title = self
.title
.ok_or_else(|| st::Error::required_value_is_missing(&["title"]))?;
let result = st::FilesRemoteAddRequest {
external_id,
external_url,
title,
filetype: self.filetype,
indexable_file_contents: self.indexable_file_contents,
preview_image: self.preview_image,
};
Ok(result.into())
}
/// Sets [`external_id`][`st::FilesRemoteAddRequest::external_id`].
pub fn external_id(mut self, external_id: String) -> Self {
self.external_id = Some(external_id);
self
}
/// Sets [`external_url`][`st::FilesRemoteAddRequest::external_url`].
pub fn external_url(mut self, external_url: String) -> Self {
self.external_url = Some(external_url);
self
}
/// Sets [`title`][`st::FilesRemoteAddRequest::title`].
pub fn title(mut self, title: String) -> Self {
self.title = Some(title);
self
}
/// Sets [`filetype`][`st::FilesRemoteAddRequest::filetype`].
pub fn filetype(mut self, filetype: Option<String>) -> Self {
self.filetype = filetype;
self
}
/// Sets [`indexable_file_contents`][`st::FilesRemoteAddRequest::indexable_file_contents`].
pub fn indexable_file_contents(mut self, indexable_file_contents: Option<String>) -> Self {
self.indexable_file_contents = indexable_file_contents;
self
}
/// Sets [`preview_image`][`st::FilesRemoteAddRequest::preview_image`].
pub fn preview_image(mut self, preview_image: Option<String>) -> Self {
self.preview_image = preview_image;
self
}
}