rust_tdlib/types/
log_stream.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5use std::fmt::Debug;
6
7pub trait TDLogStream: Debug + RObject {}
9
10#[derive(Debug, Clone, Deserialize, Serialize, Default)]
12#[serde(tag = "@type")]
13pub enum LogStream {
14 #[doc(hidden)]
15 #[default]
16 _Default,
17 #[serde(rename = "getLogStream")]
19 GetLogStream(GetLogStream),
20 #[serde(rename = "logStreamDefault")]
22 Default(LogStreamDefault),
23 #[serde(rename = "logStreamEmpty")]
25 Empty(LogStreamEmpty),
26 #[serde(rename = "logStreamFile")]
28 File(LogStreamFile),
29}
30
31impl RObject for LogStream {
32 #[doc(hidden)]
33 fn extra(&self) -> Option<&str> {
34 match self {
35 LogStream::GetLogStream(t) => t.extra(),
36 LogStream::Default(t) => t.extra(),
37 LogStream::Empty(t) => t.extra(),
38 LogStream::File(t) => t.extra(),
39
40 _ => None,
41 }
42 }
43 #[doc(hidden)]
44 fn client_id(&self) -> Option<i32> {
45 match self {
46 LogStream::GetLogStream(t) => t.client_id(),
47 LogStream::Default(t) => t.client_id(),
48 LogStream::Empty(t) => t.client_id(),
49 LogStream::File(t) => t.client_id(),
50
51 _ => None,
52 }
53 }
54}
55
56impl LogStream {
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, LogStream::_Default)
63 }
64}
65
66impl AsRef<LogStream> for LogStream {
67 fn as_ref(&self) -> &LogStream {
68 self
69 }
70}
71
72#[derive(Debug, Clone, Default, Serialize, Deserialize)]
74pub struct LogStreamDefault {
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}
81
82impl RObject for LogStreamDefault {
83 #[doc(hidden)]
84 fn extra(&self) -> Option<&str> {
85 self.extra.as_deref()
86 }
87 #[doc(hidden)]
88 fn client_id(&self) -> Option<i32> {
89 self.client_id
90 }
91}
92
93impl TDLogStream for LogStreamDefault {}
94
95impl LogStreamDefault {
96 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
97 Ok(serde_json::from_str(json.as_ref())?)
98 }
99 pub fn builder() -> LogStreamDefaultBuilder {
100 let mut inner = LogStreamDefault::default();
101 inner.extra = Some(Uuid::new_v4().to_string());
102
103 LogStreamDefaultBuilder { inner }
104 }
105}
106
107#[doc(hidden)]
108pub struct LogStreamDefaultBuilder {
109 inner: LogStreamDefault,
110}
111
112#[deprecated]
113pub type RTDLogStreamDefaultBuilder = LogStreamDefaultBuilder;
114
115impl LogStreamDefaultBuilder {
116 pub fn build(&self) -> LogStreamDefault {
117 self.inner.clone()
118 }
119}
120
121impl AsRef<LogStreamDefault> for LogStreamDefault {
122 fn as_ref(&self) -> &LogStreamDefault {
123 self
124 }
125}
126
127impl AsRef<LogStreamDefault> for LogStreamDefaultBuilder {
128 fn as_ref(&self) -> &LogStreamDefault {
129 &self.inner
130 }
131}
132
133#[derive(Debug, Clone, Default, Serialize, Deserialize)]
135pub struct LogStreamEmpty {
136 #[doc(hidden)]
137 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
138 extra: Option<String>,
139 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
140 client_id: Option<i32>,
141}
142
143impl RObject for LogStreamEmpty {
144 #[doc(hidden)]
145 fn extra(&self) -> Option<&str> {
146 self.extra.as_deref()
147 }
148 #[doc(hidden)]
149 fn client_id(&self) -> Option<i32> {
150 self.client_id
151 }
152}
153
154impl TDLogStream for LogStreamEmpty {}
155
156impl LogStreamEmpty {
157 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
158 Ok(serde_json::from_str(json.as_ref())?)
159 }
160 pub fn builder() -> LogStreamEmptyBuilder {
161 let mut inner = LogStreamEmpty::default();
162 inner.extra = Some(Uuid::new_v4().to_string());
163
164 LogStreamEmptyBuilder { inner }
165 }
166}
167
168#[doc(hidden)]
169pub struct LogStreamEmptyBuilder {
170 inner: LogStreamEmpty,
171}
172
173#[deprecated]
174pub type RTDLogStreamEmptyBuilder = LogStreamEmptyBuilder;
175
176impl LogStreamEmptyBuilder {
177 pub fn build(&self) -> LogStreamEmpty {
178 self.inner.clone()
179 }
180}
181
182impl AsRef<LogStreamEmpty> for LogStreamEmpty {
183 fn as_ref(&self) -> &LogStreamEmpty {
184 self
185 }
186}
187
188impl AsRef<LogStreamEmpty> for LogStreamEmptyBuilder {
189 fn as_ref(&self) -> &LogStreamEmpty {
190 &self.inner
191 }
192}
193
194#[derive(Debug, Clone, Default, Serialize, Deserialize)]
196pub struct LogStreamFile {
197 #[doc(hidden)]
198 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
199 extra: Option<String>,
200 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
201 client_id: Option<i32>,
202 #[serde(default)]
205 path: String,
206 #[serde(default)]
209 max_file_size: i64,
210 #[serde(default)]
213 redirect_stderr: bool,
214}
215
216impl RObject for LogStreamFile {
217 #[doc(hidden)]
218 fn extra(&self) -> Option<&str> {
219 self.extra.as_deref()
220 }
221 #[doc(hidden)]
222 fn client_id(&self) -> Option<i32> {
223 self.client_id
224 }
225}
226
227impl TDLogStream for LogStreamFile {}
228
229impl LogStreamFile {
230 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
231 Ok(serde_json::from_str(json.as_ref())?)
232 }
233 pub fn builder() -> LogStreamFileBuilder {
234 let mut inner = LogStreamFile::default();
235 inner.extra = Some(Uuid::new_v4().to_string());
236
237 LogStreamFileBuilder { inner }
238 }
239
240 pub fn path(&self) -> &String {
241 &self.path
242 }
243
244 pub fn max_file_size(&self) -> i64 {
245 self.max_file_size
246 }
247
248 pub fn redirect_stderr(&self) -> bool {
249 self.redirect_stderr
250 }
251}
252
253#[doc(hidden)]
254pub struct LogStreamFileBuilder {
255 inner: LogStreamFile,
256}
257
258#[deprecated]
259pub type RTDLogStreamFileBuilder = LogStreamFileBuilder;
260
261impl LogStreamFileBuilder {
262 pub fn build(&self) -> LogStreamFile {
263 self.inner.clone()
264 }
265
266 pub fn path<T: AsRef<str>>(&mut self, path: T) -> &mut Self {
267 self.inner.path = path.as_ref().to_string();
268 self
269 }
270
271 pub fn max_file_size(&mut self, max_file_size: i64) -> &mut Self {
272 self.inner.max_file_size = max_file_size;
273 self
274 }
275
276 pub fn redirect_stderr(&mut self, redirect_stderr: bool) -> &mut Self {
277 self.inner.redirect_stderr = redirect_stderr;
278 self
279 }
280}
281
282impl AsRef<LogStreamFile> for LogStreamFile {
283 fn as_ref(&self) -> &LogStreamFile {
284 self
285 }
286}
287
288impl AsRef<LogStreamFile> for LogStreamFileBuilder {
289 fn as_ref(&self) -> &LogStreamFile {
290 &self.inner
291 }
292}