rust_tdlib/types/
message_file_type.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5use std::fmt::Debug;
6
7pub trait TDMessageFileType: Debug + RObject {}
9
10#[derive(Debug, Clone, Deserialize, Serialize, Default)]
12#[serde(tag = "@type")]
13pub enum MessageFileType {
14 #[doc(hidden)]
15 #[default]
16 _Default,
17 #[serde(rename = "getMessageFileType")]
19 GetMessageFileType(GetMessageFileType),
20 #[serde(rename = "messageFileTypeGroup")]
22 Group(MessageFileTypeGroup),
23 #[serde(rename = "messageFileTypePrivate")]
25 Private(MessageFileTypePrivate),
26 #[serde(rename = "messageFileTypeUnknown")]
28 Unknown(MessageFileTypeUnknown),
29}
30
31impl RObject for MessageFileType {
32 #[doc(hidden)]
33 fn extra(&self) -> Option<&str> {
34 match self {
35 MessageFileType::GetMessageFileType(t) => t.extra(),
36 MessageFileType::Group(t) => t.extra(),
37 MessageFileType::Private(t) => t.extra(),
38 MessageFileType::Unknown(t) => t.extra(),
39
40 _ => None,
41 }
42 }
43 #[doc(hidden)]
44 fn client_id(&self) -> Option<i32> {
45 match self {
46 MessageFileType::GetMessageFileType(t) => t.client_id(),
47 MessageFileType::Group(t) => t.client_id(),
48 MessageFileType::Private(t) => t.client_id(),
49 MessageFileType::Unknown(t) => t.client_id(),
50
51 _ => None,
52 }
53 }
54}
55
56impl MessageFileType {
57 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
58 Ok(serde_json::from_str(json.as_ref())?)
59 }
60 #[doc(hidden)]
61 pub fn _is_default(&self) -> bool {
62 matches!(self, MessageFileType::_Default)
63 }
64}
65
66impl AsRef<MessageFileType> for MessageFileType {
67 fn as_ref(&self) -> &MessageFileType {
68 self
69 }
70}
71
72#[derive(Debug, Clone, Default, Serialize, Deserialize)]
74pub struct MessageFileTypeGroup {
75 #[doc(hidden)]
76 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
77 extra: Option<String>,
78 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
79 client_id: Option<i32>,
80 #[serde(default)]
83 title: String,
84}
85
86impl RObject for MessageFileTypeGroup {
87 #[doc(hidden)]
88 fn extra(&self) -> Option<&str> {
89 self.extra.as_deref()
90 }
91 #[doc(hidden)]
92 fn client_id(&self) -> Option<i32> {
93 self.client_id
94 }
95}
96
97impl TDMessageFileType for MessageFileTypeGroup {}
98
99impl MessageFileTypeGroup {
100 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
101 Ok(serde_json::from_str(json.as_ref())?)
102 }
103 pub fn builder() -> MessageFileTypeGroupBuilder {
104 let mut inner = MessageFileTypeGroup::default();
105 inner.extra = Some(Uuid::new_v4().to_string());
106
107 MessageFileTypeGroupBuilder { inner }
108 }
109
110 pub fn title(&self) -> &String {
111 &self.title
112 }
113}
114
115#[doc(hidden)]
116pub struct MessageFileTypeGroupBuilder {
117 inner: MessageFileTypeGroup,
118}
119
120#[deprecated]
121pub type RTDMessageFileTypeGroupBuilder = MessageFileTypeGroupBuilder;
122
123impl MessageFileTypeGroupBuilder {
124 pub fn build(&self) -> MessageFileTypeGroup {
125 self.inner.clone()
126 }
127
128 pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
129 self.inner.title = title.as_ref().to_string();
130 self
131 }
132}
133
134impl AsRef<MessageFileTypeGroup> for MessageFileTypeGroup {
135 fn as_ref(&self) -> &MessageFileTypeGroup {
136 self
137 }
138}
139
140impl AsRef<MessageFileTypeGroup> for MessageFileTypeGroupBuilder {
141 fn as_ref(&self) -> &MessageFileTypeGroup {
142 &self.inner
143 }
144}
145
146#[derive(Debug, Clone, Default, Serialize, Deserialize)]
148pub struct MessageFileTypePrivate {
149 #[doc(hidden)]
150 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
151 extra: Option<String>,
152 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
153 client_id: Option<i32>,
154 #[serde(default)]
157 name: String,
158}
159
160impl RObject for MessageFileTypePrivate {
161 #[doc(hidden)]
162 fn extra(&self) -> Option<&str> {
163 self.extra.as_deref()
164 }
165 #[doc(hidden)]
166 fn client_id(&self) -> Option<i32> {
167 self.client_id
168 }
169}
170
171impl TDMessageFileType for MessageFileTypePrivate {}
172
173impl MessageFileTypePrivate {
174 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
175 Ok(serde_json::from_str(json.as_ref())?)
176 }
177 pub fn builder() -> MessageFileTypePrivateBuilder {
178 let mut inner = MessageFileTypePrivate::default();
179 inner.extra = Some(Uuid::new_v4().to_string());
180
181 MessageFileTypePrivateBuilder { inner }
182 }
183
184 pub fn name(&self) -> &String {
185 &self.name
186 }
187}
188
189#[doc(hidden)]
190pub struct MessageFileTypePrivateBuilder {
191 inner: MessageFileTypePrivate,
192}
193
194#[deprecated]
195pub type RTDMessageFileTypePrivateBuilder = MessageFileTypePrivateBuilder;
196
197impl MessageFileTypePrivateBuilder {
198 pub fn build(&self) -> MessageFileTypePrivate {
199 self.inner.clone()
200 }
201
202 pub fn name<T: AsRef<str>>(&mut self, name: T) -> &mut Self {
203 self.inner.name = name.as_ref().to_string();
204 self
205 }
206}
207
208impl AsRef<MessageFileTypePrivate> for MessageFileTypePrivate {
209 fn as_ref(&self) -> &MessageFileTypePrivate {
210 self
211 }
212}
213
214impl AsRef<MessageFileTypePrivate> for MessageFileTypePrivateBuilder {
215 fn as_ref(&self) -> &MessageFileTypePrivate {
216 &self.inner
217 }
218}
219
220#[derive(Debug, Clone, Default, Serialize, Deserialize)]
222pub struct MessageFileTypeUnknown {
223 #[doc(hidden)]
224 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
225 extra: Option<String>,
226 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
227 client_id: Option<i32>,
228}
229
230impl RObject for MessageFileTypeUnknown {
231 #[doc(hidden)]
232 fn extra(&self) -> Option<&str> {
233 self.extra.as_deref()
234 }
235 #[doc(hidden)]
236 fn client_id(&self) -> Option<i32> {
237 self.client_id
238 }
239}
240
241impl TDMessageFileType for MessageFileTypeUnknown {}
242
243impl MessageFileTypeUnknown {
244 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
245 Ok(serde_json::from_str(json.as_ref())?)
246 }
247 pub fn builder() -> MessageFileTypeUnknownBuilder {
248 let mut inner = MessageFileTypeUnknown::default();
249 inner.extra = Some(Uuid::new_v4().to_string());
250
251 MessageFileTypeUnknownBuilder { inner }
252 }
253}
254
255#[doc(hidden)]
256pub struct MessageFileTypeUnknownBuilder {
257 inner: MessageFileTypeUnknown,
258}
259
260#[deprecated]
261pub type RTDMessageFileTypeUnknownBuilder = MessageFileTypeUnknownBuilder;
262
263impl MessageFileTypeUnknownBuilder {
264 pub fn build(&self) -> MessageFileTypeUnknown {
265 self.inner.clone()
266 }
267}
268
269impl AsRef<MessageFileTypeUnknown> for MessageFileTypeUnknown {
270 fn as_ref(&self) -> &MessageFileTypeUnknown {
271 self
272 }
273}
274
275impl AsRef<MessageFileTypeUnknown> for MessageFileTypeUnknownBuilder {
276 fn as_ref(&self) -> &MessageFileTypeUnknown {
277 &self.inner
278 }
279}