rust_tdlib/types/
call_server.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct CallServer {
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 #[serde(
16 deserialize_with = "super::_common::number_from_string",
17 serialize_with = "super::_common::string_to_number"
18 )]
19 #[serde(default)]
20 id: i64,
21 #[serde(default)]
24 ip_address: String,
25 #[serde(default)]
28 ipv6_address: String,
29 #[serde(default)]
32 port: i32,
33 #[serde(rename(serialize = "type", deserialize = "type"))]
36 #[serde(skip_serializing_if = "CallServerType::_is_default")]
37 type_: CallServerType,
38}
39
40impl RObject for CallServer {
41 #[doc(hidden)]
42 fn extra(&self) -> Option<&str> {
43 self.extra.as_deref()
44 }
45 #[doc(hidden)]
46 fn client_id(&self) -> Option<i32> {
47 self.client_id
48 }
49}
50
51impl CallServer {
52 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
53 Ok(serde_json::from_str(json.as_ref())?)
54 }
55 pub fn builder() -> CallServerBuilder {
56 let mut inner = CallServer::default();
57 inner.extra = Some(Uuid::new_v4().to_string());
58
59 CallServerBuilder { inner }
60 }
61
62 pub fn id(&self) -> i64 {
63 self.id
64 }
65
66 pub fn ip_address(&self) -> &String {
67 &self.ip_address
68 }
69
70 pub fn ipv6_address(&self) -> &String {
71 &self.ipv6_address
72 }
73
74 pub fn port(&self) -> i32 {
75 self.port
76 }
77
78 pub fn type_(&self) -> &CallServerType {
79 &self.type_
80 }
81}
82
83#[doc(hidden)]
84pub struct CallServerBuilder {
85 inner: CallServer,
86}
87
88#[deprecated]
89pub type RTDCallServerBuilder = CallServerBuilder;
90
91impl CallServerBuilder {
92 pub fn build(&self) -> CallServer {
93 self.inner.clone()
94 }
95
96 pub fn id(&mut self, id: i64) -> &mut Self {
97 self.inner.id = id;
98 self
99 }
100
101 pub fn ip_address<T: AsRef<str>>(&mut self, ip_address: T) -> &mut Self {
102 self.inner.ip_address = ip_address.as_ref().to_string();
103 self
104 }
105
106 pub fn ipv6_address<T: AsRef<str>>(&mut self, ipv6_address: T) -> &mut Self {
107 self.inner.ipv6_address = ipv6_address.as_ref().to_string();
108 self
109 }
110
111 pub fn port(&mut self, port: i32) -> &mut Self {
112 self.inner.port = port;
113 self
114 }
115
116 pub fn type_<T: AsRef<CallServerType>>(&mut self, type_: T) -> &mut Self {
117 self.inner.type_ = type_.as_ref().clone();
118 self
119 }
120}
121
122impl AsRef<CallServer> for CallServer {
123 fn as_ref(&self) -> &CallServer {
124 self
125 }
126}
127
128impl AsRef<CallServer> for CallServerBuilder {
129 fn as_ref(&self) -> &CallServer {
130 &self.inner
131 }
132}