twilio_rust_openapi/apis/
api20100401_ip_address_api.rs

1/*
2 * Twilio - Api
3 *
4 * This is the public Twilio REST API.
5 *
6 * The version of the OpenAPI document: 1.0.0
7 * Contact: support@twilio.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration};
16
17/// struct for passing parameters to the method [`create_sip_ip_address`]
18#[derive(Clone, Debug)]
19pub struct CreateSipIpAddressParams {
20    /// The unique id of the [Account](https://www.twilio.com/docs/iam/api/account) responsible for this resource.
21    pub account_sid: String,
22    /// The IpAccessControlList Sid with which to associate the created IpAddress resource.
23    pub ip_access_control_list_sid: String,
24    /// A human readable descriptive text for this resource, up to 255 characters long.
25    pub friendly_name: String,
26    /// An IP address in dotted decimal notation from which you want to accept traffic. Any SIP requests from this IP address will be allowed by Twilio. IPv4 only supported today.
27    pub ip_address: String,
28    /// An integer representing the length of the CIDR prefix to use with this IP address when accepting traffic. By default the entire IP address is used.
29    pub cidr_prefix_length: Option<i32>
30}
31
32/// struct for passing parameters to the method [`delete_sip_ip_address`]
33#[derive(Clone, Debug)]
34pub struct DeleteSipIpAddressParams {
35    /// The unique id of the [Account](https://www.twilio.com/docs/iam/api/account) responsible for this resource.
36    pub account_sid: String,
37    /// The IpAccessControlList Sid that identifies the IpAddress resources to delete.
38    pub ip_access_control_list_sid: String,
39    /// A 34 character string that uniquely identifies the resource to delete.
40    pub sid: String
41}
42
43/// struct for passing parameters to the method [`fetch_sip_ip_address`]
44#[derive(Clone, Debug)]
45pub struct FetchSipIpAddressParams {
46    /// The unique id of the [Account](https://www.twilio.com/docs/iam/api/account) responsible for this resource.
47    pub account_sid: String,
48    /// The IpAccessControlList Sid that identifies the IpAddress resources to fetch.
49    pub ip_access_control_list_sid: String,
50    /// A 34 character string that uniquely identifies the IpAddress resource to fetch.
51    pub sid: String
52}
53
54/// struct for passing parameters to the method [`list_sip_ip_address`]
55#[derive(Clone, Debug)]
56pub struct ListSipIpAddressParams {
57    /// The unique id of the [Account](https://www.twilio.com/docs/iam/api/account) responsible for this resource.
58    pub account_sid: String,
59    /// The IpAccessControlList Sid that identifies the IpAddress resources to read.
60    pub ip_access_control_list_sid: String,
61    /// How many resources to return in each list page. The default is 50, and the maximum is 1000.
62    pub page_size: Option<i32>,
63    /// The page index. This value is simply for client state.
64    pub page: Option<i32>,
65    /// The page token. This is provided by the API.
66    pub page_token: Option<String>
67}
68
69/// struct for passing parameters to the method [`update_sip_ip_address`]
70#[derive(Clone, Debug)]
71pub struct UpdateSipIpAddressParams {
72    /// The unique id of the [Account](https://www.twilio.com/docs/iam/api/account) responsible for this resource.
73    pub account_sid: String,
74    /// The IpAccessControlList Sid that identifies the IpAddress resources to update.
75    pub ip_access_control_list_sid: String,
76    /// A 34 character string that identifies the IpAddress resource to update.
77    pub sid: String,
78    /// An IP address in dotted decimal notation from which you want to accept traffic. Any SIP requests from this IP address will be allowed by Twilio. IPv4 only supported today.
79    pub ip_address: Option<String>,
80    /// A human readable descriptive text for this resource, up to 255 characters long.
81    pub friendly_name: Option<String>,
82    /// An integer representing the length of the CIDR prefix to use with this IP address when accepting traffic. By default the entire IP address is used.
83    pub cidr_prefix_length: Option<i32>
84}
85
86
87/// struct for typed errors of method [`create_sip_ip_address`]
88#[derive(Debug, Clone, Serialize, Deserialize)]
89#[serde(untagged)]
90pub enum CreateSipIpAddressError {
91    UnknownValue(serde_json::Value),
92}
93
94/// struct for typed errors of method [`delete_sip_ip_address`]
95#[derive(Debug, Clone, Serialize, Deserialize)]
96#[serde(untagged)]
97pub enum DeleteSipIpAddressError {
98    UnknownValue(serde_json::Value),
99}
100
101/// struct for typed errors of method [`fetch_sip_ip_address`]
102#[derive(Debug, Clone, Serialize, Deserialize)]
103#[serde(untagged)]
104pub enum FetchSipIpAddressError {
105    UnknownValue(serde_json::Value),
106}
107
108/// struct for typed errors of method [`list_sip_ip_address`]
109#[derive(Debug, Clone, Serialize, Deserialize)]
110#[serde(untagged)]
111pub enum ListSipIpAddressError {
112    UnknownValue(serde_json::Value),
113}
114
115/// struct for typed errors of method [`update_sip_ip_address`]
116#[derive(Debug, Clone, Serialize, Deserialize)]
117#[serde(untagged)]
118pub enum UpdateSipIpAddressError {
119    UnknownValue(serde_json::Value),
120}
121
122
123/// Create a new IpAddress resource.
124pub async fn create_sip_ip_address(configuration: &configuration::Configuration, params: CreateSipIpAddressParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodSipPeriodSipIpAccessControlListPeriodSipIpAddress, Error<CreateSipIpAddressError>> {
125    let local_var_configuration = configuration;
126
127    // unbox the parameters
128    let account_sid = params.account_sid;
129    let ip_access_control_list_sid = params.ip_access_control_list_sid;
130    let friendly_name = params.friendly_name;
131    let ip_address = params.ip_address;
132    let cidr_prefix_length = params.cidr_prefix_length;
133
134
135    let local_var_client = &local_var_configuration.client;
136
137    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/SIP/IpAccessControlLists/{IpAccessControlListSid}/IpAddresses.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), IpAccessControlListSid=crate::apis::urlencode(ip_access_control_list_sid));
138    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
139
140    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
141        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
142    }
143    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
144        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
145    };
146    let mut local_var_form_params = std::collections::HashMap::new();
147    local_var_form_params.insert("FriendlyName", friendly_name.to_string());
148    local_var_form_params.insert("IpAddress", ip_address.to_string());
149    if let Some(local_var_param_value) = cidr_prefix_length {
150        local_var_form_params.insert("CidrPrefixLength", local_var_param_value.to_string());
151    }
152    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
153
154    let local_var_req = local_var_req_builder.build()?;
155    let local_var_resp = local_var_client.execute(local_var_req).await?;
156
157    let local_var_status = local_var_resp.status();
158    let local_var_content = local_var_resp.text().await?;
159
160    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
161        serde_json::from_str(&local_var_content).map_err(Error::from)
162    } else {
163        let local_var_entity: Option<CreateSipIpAddressError> = serde_json::from_str(&local_var_content).ok();
164        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
165        Err(Error::ResponseError(local_var_error))
166    }
167}
168
169/// Delete an IpAddress resource.
170pub async fn delete_sip_ip_address(configuration: &configuration::Configuration, params: DeleteSipIpAddressParams) -> Result<(), Error<DeleteSipIpAddressError>> {
171    let local_var_configuration = configuration;
172
173    // unbox the parameters
174    let account_sid = params.account_sid;
175    let ip_access_control_list_sid = params.ip_access_control_list_sid;
176    let sid = params.sid;
177
178
179    let local_var_client = &local_var_configuration.client;
180
181    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/SIP/IpAccessControlLists/{IpAccessControlListSid}/IpAddresses/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), IpAccessControlListSid=crate::apis::urlencode(ip_access_control_list_sid), Sid=crate::apis::urlencode(sid));
182    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
183
184    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
185        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
186    }
187    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
188        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
189    };
190
191    let local_var_req = local_var_req_builder.build()?;
192    let local_var_resp = local_var_client.execute(local_var_req).await?;
193
194    let local_var_status = local_var_resp.status();
195    let local_var_content = local_var_resp.text().await?;
196
197    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
198        Ok(())
199    } else {
200        let local_var_entity: Option<DeleteSipIpAddressError> = serde_json::from_str(&local_var_content).ok();
201        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
202        Err(Error::ResponseError(local_var_error))
203    }
204}
205
206/// Read one IpAddress resource.
207pub async fn fetch_sip_ip_address(configuration: &configuration::Configuration, params: FetchSipIpAddressParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodSipPeriodSipIpAccessControlListPeriodSipIpAddress, Error<FetchSipIpAddressError>> {
208    let local_var_configuration = configuration;
209
210    // unbox the parameters
211    let account_sid = params.account_sid;
212    let ip_access_control_list_sid = params.ip_access_control_list_sid;
213    let sid = params.sid;
214
215
216    let local_var_client = &local_var_configuration.client;
217
218    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/SIP/IpAccessControlLists/{IpAccessControlListSid}/IpAddresses/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), IpAccessControlListSid=crate::apis::urlencode(ip_access_control_list_sid), Sid=crate::apis::urlencode(sid));
219    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
220
221    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
222        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
223    }
224    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
225        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
226    };
227
228    let local_var_req = local_var_req_builder.build()?;
229    let local_var_resp = local_var_client.execute(local_var_req).await?;
230
231    let local_var_status = local_var_resp.status();
232    let local_var_content = local_var_resp.text().await?;
233
234    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
235        serde_json::from_str(&local_var_content).map_err(Error::from)
236    } else {
237        let local_var_entity: Option<FetchSipIpAddressError> = serde_json::from_str(&local_var_content).ok();
238        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
239        Err(Error::ResponseError(local_var_error))
240    }
241}
242
243/// Read multiple IpAddress resources.
244pub async fn list_sip_ip_address(configuration: &configuration::Configuration, params: ListSipIpAddressParams) -> Result<models::ListSipIpAddressResponse, Error<ListSipIpAddressError>> {
245    let local_var_configuration = configuration;
246
247    // unbox the parameters
248    let account_sid = params.account_sid;
249    let ip_access_control_list_sid = params.ip_access_control_list_sid;
250    let page_size = params.page_size;
251    let page = params.page;
252    let page_token = params.page_token;
253
254
255    let local_var_client = &local_var_configuration.client;
256
257    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/SIP/IpAccessControlLists/{IpAccessControlListSid}/IpAddresses.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), IpAccessControlListSid=crate::apis::urlencode(ip_access_control_list_sid));
258    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
259
260    if let Some(ref local_var_str) = page_size {
261        local_var_req_builder = local_var_req_builder.query(&[("PageSize", &local_var_str.to_string())]);
262    }
263    if let Some(ref local_var_str) = page {
264        local_var_req_builder = local_var_req_builder.query(&[("Page", &local_var_str.to_string())]);
265    }
266    if let Some(ref local_var_str) = page_token {
267        local_var_req_builder = local_var_req_builder.query(&[("PageToken", &local_var_str.to_string())]);
268    }
269    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
270        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
271    }
272    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
273        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
274    };
275
276    let local_var_req = local_var_req_builder.build()?;
277    let local_var_resp = local_var_client.execute(local_var_req).await?;
278
279    let local_var_status = local_var_resp.status();
280    let local_var_content = local_var_resp.text().await?;
281
282    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
283        serde_json::from_str(&local_var_content).map_err(Error::from)
284    } else {
285        let local_var_entity: Option<ListSipIpAddressError> = serde_json::from_str(&local_var_content).ok();
286        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
287        Err(Error::ResponseError(local_var_error))
288    }
289}
290
291/// Update an IpAddress resource.
292pub async fn update_sip_ip_address(configuration: &configuration::Configuration, params: UpdateSipIpAddressParams) -> Result<models::ApiPeriodV2010PeriodAccountPeriodSipPeriodSipIpAccessControlListPeriodSipIpAddress, Error<UpdateSipIpAddressError>> {
293    let local_var_configuration = configuration;
294
295    // unbox the parameters
296    let account_sid = params.account_sid;
297    let ip_access_control_list_sid = params.ip_access_control_list_sid;
298    let sid = params.sid;
299    let ip_address = params.ip_address;
300    let friendly_name = params.friendly_name;
301    let cidr_prefix_length = params.cidr_prefix_length;
302
303
304    let local_var_client = &local_var_configuration.client;
305
306    let local_var_uri_str = format!("{}/2010-04-01/Accounts/{AccountSid}/SIP/IpAccessControlLists/{IpAccessControlListSid}/IpAddresses/{Sid}.json", local_var_configuration.base_path, AccountSid=crate::apis::urlencode(account_sid), IpAccessControlListSid=crate::apis::urlencode(ip_access_control_list_sid), Sid=crate::apis::urlencode(sid));
307    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
308
309    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
310        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
311    }
312    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
313        local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
314    };
315    let mut local_var_form_params = std::collections::HashMap::new();
316    if let Some(local_var_param_value) = ip_address {
317        local_var_form_params.insert("IpAddress", local_var_param_value.to_string());
318    }
319    if let Some(local_var_param_value) = friendly_name {
320        local_var_form_params.insert("FriendlyName", local_var_param_value.to_string());
321    }
322    if let Some(local_var_param_value) = cidr_prefix_length {
323        local_var_form_params.insert("CidrPrefixLength", local_var_param_value.to_string());
324    }
325    local_var_req_builder = local_var_req_builder.form(&local_var_form_params);
326
327    let local_var_req = local_var_req_builder.build()?;
328    let local_var_resp = local_var_client.execute(local_var_req).await?;
329
330    let local_var_status = local_var_resp.status();
331    let local_var_content = local_var_resp.text().await?;
332
333    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
334        serde_json::from_str(&local_var_content).map_err(Error::from)
335    } else {
336        let local_var_entity: Option<UpdateSipIpAddressError> = serde_json::from_str(&local_var_content).ok();
337        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
338        Err(Error::ResponseError(local_var_error))
339    }
340}
341