twilio_rust_openapi/apis/
mod.rs

1use std::error;
2use std::fmt;
3
4#[derive(Debug, Clone)]
5pub struct ResponseContent<T> {
6    pub status: reqwest::StatusCode,
7    pub content: String,
8    pub entity: Option<T>,
9}
10
11#[derive(Debug)]
12pub enum Error<T> {
13    Reqwest(reqwest::Error),
14    Serde(serde_json::Error),
15    Io(std::io::Error),
16    ResponseError(ResponseContent<T>),
17}
18
19impl <T> fmt::Display for Error<T> {
20    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21        let (module, e) = match self {
22            Error::Reqwest(e) => ("reqwest", e.to_string()),
23            Error::Serde(e) => ("serde", e.to_string()),
24            Error::Io(e) => ("IO", e.to_string()),
25            Error::ResponseError(e) => ("response", format!("status code {}", e.status)),
26        };
27        write!(f, "error in {}: {}", module, e)
28    }
29}
30
31impl <T: fmt::Debug> error::Error for Error<T> {
32    fn source(&self) -> Option<&(dyn error::Error + 'static)> {
33        Some(match self {
34            Error::Reqwest(e) => e,
35            Error::Serde(e) => e,
36            Error::Io(e) => e,
37            Error::ResponseError(_) => return None,
38        })
39    }
40}
41
42impl <T> From<reqwest::Error> for Error<T> {
43    fn from(e: reqwest::Error) -> Self {
44        Error::Reqwest(e)
45    }
46}
47
48impl <T> From<serde_json::Error> for Error<T> {
49    fn from(e: serde_json::Error) -> Self {
50        Error::Serde(e)
51    }
52}
53
54impl <T> From<std::io::Error> for Error<T> {
55    fn from(e: std::io::Error) -> Self {
56        Error::Io(e)
57    }
58}
59
60pub fn urlencode<T: AsRef<str>>(s: T) -> String {
61    ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect()
62}
63
64pub fn parse_deep_object(prefix: &str, value: &serde_json::Value) -> Vec<(String, String)> {
65    if let serde_json::Value::Object(object) = value {
66        let mut params = vec![];
67
68        for (key, value) in object {
69            match value {
70                serde_json::Value::Object(_) => params.append(&mut parse_deep_object(
71                    &format!("{}[{}]", prefix, key),
72                    value,
73                )),
74                serde_json::Value::Array(array) => {
75                    for (i, value) in array.iter().enumerate() {
76                        params.append(&mut parse_deep_object(
77                            &format!("{}[{}][{}]", prefix, key, i),
78                            value,
79                        ));
80                    }
81                },
82                serde_json::Value::String(s) => params.push((format!("{}[{}]", prefix, key), s.clone())),
83                _ => params.push((format!("{}[{}]", prefix, key), value.to_string())),
84            }
85        }
86
87        return params;
88    }
89
90    unimplemented!("Only objects are supported with style=deepObject")
91}
92
93pub mod api20100401_account_api;
94pub mod api20100401_add_on_result_api;
95pub mod api20100401_address_api;
96pub mod api20100401_all_time_api;
97pub mod api20100401_application_api;
98pub mod api20100401_assigned_add_on_api;
99pub mod api20100401_assigned_add_on_extension_api;
100pub mod api20100401_auth_calls_credential_list_mapping_api;
101pub mod api20100401_auth_calls_ip_access_control_list_mapping_api;
102pub mod api20100401_auth_registrations_credential_list_mapping_api;
103pub mod api20100401_authorized_connect_app_api;
104pub mod api20100401_available_phone_number_country_api;
105pub mod api20100401_balance_api;
106pub mod api20100401_call_api;
107pub mod api20100401_conference_api;
108pub mod api20100401_connect_app_api;
109pub mod api20100401_credential_api;
110pub mod api20100401_credential_list_api;
111pub mod api20100401_credential_list_mapping_api;
112pub mod api20100401_daily_api;
113pub mod api20100401_data_api;
114pub mod api20100401_dependent_phone_number_api;
115pub mod api20100401_domain_api;
116pub mod api20100401_event_api;
117pub mod api20100401_feedback_api;
118pub mod api20100401_incoming_phone_number_api;
119pub mod api20100401_ip_access_control_list_api;
120pub mod api20100401_ip_access_control_list_mapping_api;
121pub mod api20100401_ip_address_api;
122pub mod api20100401_key_api;
123pub mod api20100401_last_month_api;
124pub mod api20100401_local_api;
125pub mod api20100401_machine_to_machine_api;
126pub mod api20100401_media_api;
127pub mod api20100401_member_api;
128pub mod api20100401_message_api;
129pub mod api20100401_mobile_api;
130pub mod api20100401_monthly_api;
131pub mod api20100401_national_api;
132pub mod api20100401_new_key_api;
133pub mod api20100401_new_signing_key_api;
134pub mod api20100401_notification_api;
135pub mod api20100401_outgoing_caller_id_api;
136pub mod api20100401_participant_api;
137pub mod api20100401_payload_api;
138pub mod api20100401_payment_api;
139pub mod api20100401_queue_api;
140pub mod api20100401_record_api;
141pub mod api20100401_recording_api;
142pub mod api20100401_shared_cost_api;
143pub mod api20100401_short_code_api;
144pub mod api20100401_signing_key_api;
145pub mod api20100401_siprec_api;
146pub mod api20100401_stream_api;
147pub mod api20100401_this_month_api;
148pub mod api20100401_today_api;
149pub mod api20100401_token_api;
150pub mod api20100401_toll_free_api;
151pub mod api20100401_transcription_api;
152pub mod api20100401_trigger_api;
153pub mod api20100401_user_defined_message_api;
154pub mod api20100401_user_defined_message_subscription_api;
155pub mod api20100401_validation_request_api;
156pub mod api20100401_voip_api;
157pub mod api20100401_yearly_api;
158pub mod api20100401_yesterday_api;
159
160pub mod configuration;