rust_tdlib/types/
test_proxy.rs

1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5/// Sends a simple network request to the Telegram servers via proxy; for testing only. Can be called before authorization
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct TestProxy {
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    /// Proxy server IP address
14
15    #[serde(default)]
16    server: String,
17    /// Proxy server port
18
19    #[serde(default)]
20    port: i32,
21    /// Proxy type
22
23    #[serde(rename(serialize = "type", deserialize = "type"))]
24    #[serde(skip_serializing_if = "ProxyType::_is_default")]
25    type_: ProxyType,
26    /// Identifier of a datacenter, with which to test connection
27
28    #[serde(default)]
29    dc_id: i32,
30    /// The maximum overall timeout for the request
31
32    #[serde(default)]
33    timeout: f32,
34
35    #[serde(rename(serialize = "@type"))]
36    td_type: String,
37}
38
39impl RObject for TestProxy {
40    #[doc(hidden)]
41    fn extra(&self) -> Option<&str> {
42        self.extra.as_deref()
43    }
44    #[doc(hidden)]
45    fn client_id(&self) -> Option<i32> {
46        self.client_id
47    }
48}
49
50impl RFunction for TestProxy {}
51
52impl TestProxy {
53    pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
54        Ok(serde_json::from_str(json.as_ref())?)
55    }
56    pub fn builder() -> TestProxyBuilder {
57        let mut inner = TestProxy::default();
58        inner.extra = Some(Uuid::new_v4().to_string());
59
60        inner.td_type = "testProxy".to_string();
61
62        TestProxyBuilder { inner }
63    }
64
65    pub fn server(&self) -> &String {
66        &self.server
67    }
68
69    pub fn port(&self) -> i32 {
70        self.port
71    }
72
73    pub fn type_(&self) -> &ProxyType {
74        &self.type_
75    }
76
77    pub fn dc_id(&self) -> i32 {
78        self.dc_id
79    }
80
81    pub fn timeout(&self) -> f32 {
82        self.timeout
83    }
84}
85
86#[doc(hidden)]
87pub struct TestProxyBuilder {
88    inner: TestProxy,
89}
90
91#[deprecated]
92pub type RTDTestProxyBuilder = TestProxyBuilder;
93
94impl TestProxyBuilder {
95    pub fn build(&self) -> TestProxy {
96        self.inner.clone()
97    }
98
99    pub fn server<T: AsRef<str>>(&mut self, server: T) -> &mut Self {
100        self.inner.server = server.as_ref().to_string();
101        self
102    }
103
104    pub fn port(&mut self, port: i32) -> &mut Self {
105        self.inner.port = port;
106        self
107    }
108
109    pub fn type_<T: AsRef<ProxyType>>(&mut self, type_: T) -> &mut Self {
110        self.inner.type_ = type_.as_ref().clone();
111        self
112    }
113
114    pub fn dc_id(&mut self, dc_id: i32) -> &mut Self {
115        self.inner.dc_id = dc_id;
116        self
117    }
118
119    pub fn timeout(&mut self, timeout: f32) -> &mut Self {
120        self.inner.timeout = timeout;
121        self
122    }
123}
124
125impl AsRef<TestProxy> for TestProxy {
126    fn as_ref(&self) -> &TestProxy {
127        self
128    }
129}
130
131impl AsRef<TestProxy> for TestProxyBuilder {
132    fn as_ref(&self) -> &TestProxy {
133        &self.inner
134    }
135}