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 mod acl_api;
65pub mod acl_entry_api;
66pub mod acls_in_compute_api;
67pub mod apex_redirect_api;
68pub mod automation_tokens_api;
69pub mod backend_api;
70pub mod billing_api;
71pub mod billing_address_api;
72pub mod billing_invoices_api;
73pub mod billing_usage_metrics_api;
74pub mod cache_settings_api;
75pub mod condition_api;
76pub mod config_store_api;
77pub mod config_store_item_api;
78pub mod contact_api;
79pub mod content_api;
80pub mod customer_api;
81pub mod customer_addresses_api;
82pub mod dictionary_api;
83pub mod dictionary_info_api;
84pub mod dictionary_item_api;
85pub mod diff_api;
86pub mod director_api;
87pub mod director_backend_api;
88pub mod domain_api;
89pub mod domain_inspector_historical_api;
90pub mod domain_inspector_realtime_api;
91pub mod domain_ownerships_api;
92pub mod enabled_products_api;
93pub mod events_api;
94pub mod gzip_api;
95pub mod header_api;
96pub mod healthcheck_api;
97pub mod http3_api;
98pub mod iam_permissions_api;
99pub mod iam_roles_api;
100pub mod iam_service_groups_api;
101pub mod iam_user_groups_api;
102pub mod image_optimizer_default_settings_api;
103pub mod insights_api;
104pub mod invitations_api;
105pub mod kv_store_api;
106pub mod kv_store_item_api;
107pub mod legacy_waf_configuration_sets_api;
108pub mod legacy_waf_firewall_api;
109pub mod legacy_waf_owasp_api;
110pub mod legacy_waf_rule_api;
111pub mod legacy_waf_rule_status_api;
112pub mod legacy_waf_ruleset_api;
113pub mod legacy_waf_tag_api;
114pub mod legacy_waf_update_status_api;
115pub mod log_explorer_api;
116pub mod logging_azureblob_api;
117pub mod logging_bigquery_api;
118pub mod logging_cloudfiles_api;
119pub mod logging_datadog_api;
120pub mod logging_digitalocean_api;
121pub mod logging_elasticsearch_api;
122pub mod logging_ftp_api;
123pub mod logging_gcs_api;
124pub mod logging_grafanacloudlogs_api;
125pub mod logging_heroku_api;
126pub mod logging_honeycomb_api;
127pub mod logging_https_api;
128pub mod logging_kafka_api;
129pub mod logging_kinesis_api;
130pub mod logging_logentries_api;
131pub mod logging_loggly_api;
132pub mod logging_logshuttle_api;
133pub mod logging_newrelic_api;
134pub mod logging_newrelicotlp_api;
135pub mod logging_openstack_api;
136pub mod logging_papertrail_api;
137pub mod logging_pubsub_api;
138pub mod logging_s3_api;
139pub mod logging_scalyr_api;
140pub mod logging_sftp_api;
141pub mod logging_splunk_api;
142pub mod logging_sumologic_api;
143pub mod logging_syslog_api;
144pub mod mutual_authentication_api;
145pub mod object_storage_access_keys_api;
146pub mod observability_custom_dashboards_api;
147pub mod origin_inspector_historical_api;
148pub mod origin_inspector_realtime_api;
149pub mod package_api;
150pub mod pool_api;
151pub mod pop_api;
152pub mod public_ip_list_api;
153pub mod publish_api;
154pub mod purge_api;
155pub mod rate_limiter_api;
156pub mod realtime_api;
157pub mod request_settings_api;
158pub mod resource_api;
159pub mod response_object_api;
160pub mod secret_store_api;
161pub mod secret_store_item_api;
162pub mod server_api;
163pub mod service_api;
164pub mod service_authorizations_api;
165pub mod settings_api;
166pub mod snippet_api;
167pub mod star_api;
168pub mod stats_api;
169pub mod sudo_api;
170pub mod tls_activations_api;
171pub mod tls_bulk_certificates_api;
172pub mod tls_certificates_api;
173pub mod tls_configurations_api;
174pub mod tls_csrs_api;
175pub mod tls_domains_api;
176pub mod tls_private_keys_api;
177pub mod tls_subscriptions_api;
178pub mod tokens_api;
179pub mod user_api;
180pub mod vcl_api;
181pub mod vcl_diff_api;
182pub mod version_api;
183pub mod waf_active_rules_api;
184pub mod waf_exclusions_api;
185pub mod waf_firewall_versions_api;
186pub mod waf_firewalls_api;
187pub mod waf_rule_revisions_api;
188pub mod waf_rules_api;
189pub mod waf_tags_api;
190pub mod whole_platform_ddos_historical_api;
191
192pub mod configuration;