rust_tdlib/types/
dated_file.rs

1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5/// File with the date it was uploaded
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct DatedFile {
8    #[doc(hidden)]
9    #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
10    extra: Option<String>,
11    #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
12    client_id: Option<i32>,
13    /// The file
14    file: File,
15    /// Point in time (Unix timestamp) when the file was uploaded
16
17    #[serde(default)]
18    date: i32,
19}
20
21impl RObject for DatedFile {
22    #[doc(hidden)]
23    fn extra(&self) -> Option<&str> {
24        self.extra.as_deref()
25    }
26    #[doc(hidden)]
27    fn client_id(&self) -> Option<i32> {
28        self.client_id
29    }
30}
31
32impl DatedFile {
33    pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
34        Ok(serde_json::from_str(json.as_ref())?)
35    }
36    pub fn builder() -> DatedFileBuilder {
37        let mut inner = DatedFile::default();
38        inner.extra = Some(Uuid::new_v4().to_string());
39
40        DatedFileBuilder { inner }
41    }
42
43    pub fn file(&self) -> &File {
44        &self.file
45    }
46
47    pub fn date(&self) -> i32 {
48        self.date
49    }
50}
51
52#[doc(hidden)]
53pub struct DatedFileBuilder {
54    inner: DatedFile,
55}
56
57#[deprecated]
58pub type RTDDatedFileBuilder = DatedFileBuilder;
59
60impl DatedFileBuilder {
61    pub fn build(&self) -> DatedFile {
62        self.inner.clone()
63    }
64
65    pub fn file<T: AsRef<File>>(&mut self, file: T) -> &mut Self {
66        self.inner.file = file.as_ref().clone();
67        self
68    }
69
70    pub fn date(&mut self, date: i32) -> &mut Self {
71        self.inner.date = date;
72        self
73    }
74}
75
76impl AsRef<DatedFile> for DatedFile {
77    fn as_ref(&self) -> &DatedFile {
78        self
79    }
80}
81
82impl AsRef<DatedFile> for DatedFileBuilder {
83    fn as_ref(&self) -> &DatedFile {
84        &self.inner
85    }
86}