1use std::{error, fmt};
2
3#[derive(Debug, Clone)]
4pub struct ResponseContent<T> {
5 pub status: reqwest::StatusCode,
6 pub content: String,
7 pub entity: Option<T>,
8}
9
10#[derive(Debug)]
11pub enum Error<T> {
12 Reqwest(reqwest::Error),
13 ReqwestMiddleware(reqwest_middleware::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::ReqwestMiddleware(e) => ("reqwest-middleware", e.to_string()),
24 Error::Serde(e) => ("serde", e.to_string()),
25 Error::Io(e) => ("IO", e.to_string()),
26 Error::ResponseError(e) => ("response", format!("status code {}", e.status)),
27 };
28 write!(f, "error in {}: {}", module, e)
29 }
30}
31
32impl<T: fmt::Debug> error::Error for Error<T> {
33 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
34 Some(match self {
35 Error::Reqwest(e) => e,
36 Error::ReqwestMiddleware(e) => e,
37 Error::Serde(e) => e,
38 Error::Io(e) => e,
39 Error::ResponseError(_) => return None,
40 })
41 }
42}
43
44impl<T> From<reqwest::Error> for Error<T> {
45 fn from(e: reqwest::Error) -> Self {
46 Error::Reqwest(e)
47 }
48}
49
50impl<T> From<reqwest_middleware::Error> for Error<T> {
51 fn from(e: reqwest_middleware::Error) -> Self {
52 Error::ReqwestMiddleware(e)
53 }
54}
55
56impl<T> From<serde_json::Error> for Error<T> {
57 fn from(e: serde_json::Error) -> Self {
58 Error::Serde(e)
59 }
60}
61
62impl<T> From<std::io::Error> for Error<T> {
63 fn from(e: std::io::Error) -> Self {
64 Error::Io(e)
65 }
66}
67
68pub fn urlencode<T: AsRef<str>>(s: T) -> String {
69 ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect()
70}
71
72pub fn parse_deep_object(prefix: &str, value: &serde_json::Value) -> Vec<(String, String)> {
73 if let serde_json::Value::Object(object) = value {
74 let mut params = vec![];
75
76 for (key, value) in object {
77 match value {
78 serde_json::Value::Object(_) => params.append(&mut parse_deep_object(
79 &format!("{}[{}]", prefix, key),
80 value,
81 )),
82 serde_json::Value::Array(array) => {
83 for (i, value) in array.iter().enumerate() {
84 params.append(&mut parse_deep_object(
85 &format!("{}[{}][{}]", prefix, key, i),
86 value,
87 ));
88 }
89 }
90 serde_json::Value::String(s) => {
91 params.push((format!("{}[{}]", prefix, key), s.clone()))
92 }
93 _ => params.push((format!("{}[{}]", prefix, key), value.to_string())),
94 }
95 }
96
97 return params;
98 }
99
100 unimplemented!("Only objects are supported with style=deepObject")
101}
102
103pub mod blockchains_assets_api;
104pub mod blockchains_assets_beta_api;
105pub mod compliance_api;
106pub mod contract_interactions_api;
107pub mod contract_templates_api;
108pub mod d_app_connections_api;
109pub mod deployed_contracts_api;
110pub mod exchange_accounts_api;
111pub mod fiat_accounts_api;
112pub mod fireblocks_network_api;
113pub mod gas_station_api;
114pub mod job_management_api;
115pub mod key_link_beta_api;
116pub mod keys_beta_api;
117pub mod nfts_api;
118pub mod off_exchange_api;
119pub mod payments_payout_api;
120pub mod policy_editor_beta_api;
121pub mod smart_transfers_api;
122pub mod staking_api;
123pub mod tokenization_api;
124pub mod transactions_api;
125pub mod vaults_api;
126pub mod webhooks_api;
127pub mod webhooks_v2_beta_api;
128pub mod whitelisted_contracts_api;
129pub mod whitelisted_external_wallets_api;
130pub mod whitelisted_internal_wallets_api;
131pub mod workspace_management_api;
132
133pub mod configuration;
134
135use std::sync::Arc;
136
137pub trait Api {
138 fn blockchains_assets_api(&self) -> &dyn blockchains_assets_api::BlockchainsAssetsApi;
139 fn blockchains_assets_beta_api(
140 &self,
141 ) -> &dyn blockchains_assets_beta_api::BlockchainsAssetsBetaApi;
142 fn compliance_api(&self) -> &dyn compliance_api::ComplianceApi;
143 fn contract_interactions_api(&self) -> &dyn contract_interactions_api::ContractInteractionsApi;
144 fn contract_templates_api(&self) -> &dyn contract_templates_api::ContractTemplatesApi;
145 fn d_app_connections_api(&self) -> &dyn d_app_connections_api::DAppConnectionsApi;
146 fn deployed_contracts_api(&self) -> &dyn deployed_contracts_api::DeployedContractsApi;
147 fn exchange_accounts_api(&self) -> &dyn exchange_accounts_api::ExchangeAccountsApi;
148 fn fiat_accounts_api(&self) -> &dyn fiat_accounts_api::FiatAccountsApi;
149 fn fireblocks_network_api(&self) -> &dyn fireblocks_network_api::FireblocksNetworkApi;
150 fn gas_station_api(&self) -> &dyn gas_station_api::GasStationApi;
151 fn job_management_api(&self) -> &dyn job_management_api::JobManagementApi;
152 fn key_link_beta_api(&self) -> &dyn key_link_beta_api::KeyLinkBetaApi;
153 fn keys_beta_api(&self) -> &dyn keys_beta_api::KeysBetaApi;
154 fn nfts_api(&self) -> &dyn nfts_api::NftsApi;
155 fn off_exchange_api(&self) -> &dyn off_exchange_api::OffExchangeApi;
156 fn payments_payout_api(&self) -> &dyn payments_payout_api::PaymentsPayoutApi;
157 fn policy_editor_beta_api(&self) -> &dyn policy_editor_beta_api::PolicyEditorBetaApi;
158 fn smart_transfers_api(&self) -> &dyn smart_transfers_api::SmartTransfersApi;
159 fn staking_api(&self) -> &dyn staking_api::StakingApi;
160 fn tokenization_api(&self) -> &dyn tokenization_api::TokenizationApi;
161 fn transactions_api(&self) -> &dyn transactions_api::TransactionsApi;
162 fn vaults_api(&self) -> &dyn vaults_api::VaultsApi;
163 fn webhooks_api(&self) -> &dyn webhooks_api::WebhooksApi;
164 fn webhooks_v2_beta_api(&self) -> &dyn webhooks_v2_beta_api::WebhooksV2BetaApi;
165 fn whitelisted_contracts_api(&self) -> &dyn whitelisted_contracts_api::WhitelistedContractsApi;
166 fn whitelisted_external_wallets_api(
167 &self,
168 ) -> &dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi;
169 fn whitelisted_internal_wallets_api(
170 &self,
171 ) -> &dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi;
172 fn workspace_management_api(&self) -> &dyn workspace_management_api::WorkspaceManagementApi;
173}
174
175pub struct ApiClient {
176 blockchains_assets_api: Box<dyn blockchains_assets_api::BlockchainsAssetsApi>,
177 blockchains_assets_beta_api: Box<dyn blockchains_assets_beta_api::BlockchainsAssetsBetaApi>,
178 compliance_api: Box<dyn compliance_api::ComplianceApi>,
179 contract_interactions_api: Box<dyn contract_interactions_api::ContractInteractionsApi>,
180 contract_templates_api: Box<dyn contract_templates_api::ContractTemplatesApi>,
181 d_app_connections_api: Box<dyn d_app_connections_api::DAppConnectionsApi>,
182 deployed_contracts_api: Box<dyn deployed_contracts_api::DeployedContractsApi>,
183 exchange_accounts_api: Box<dyn exchange_accounts_api::ExchangeAccountsApi>,
184 fiat_accounts_api: Box<dyn fiat_accounts_api::FiatAccountsApi>,
185 fireblocks_network_api: Box<dyn fireblocks_network_api::FireblocksNetworkApi>,
186 gas_station_api: Box<dyn gas_station_api::GasStationApi>,
187 job_management_api: Box<dyn job_management_api::JobManagementApi>,
188 key_link_beta_api: Box<dyn key_link_beta_api::KeyLinkBetaApi>,
189 keys_beta_api: Box<dyn keys_beta_api::KeysBetaApi>,
190 nfts_api: Box<dyn nfts_api::NftsApi>,
191 off_exchange_api: Box<dyn off_exchange_api::OffExchangeApi>,
192 payments_payout_api: Box<dyn payments_payout_api::PaymentsPayoutApi>,
193 policy_editor_beta_api: Box<dyn policy_editor_beta_api::PolicyEditorBetaApi>,
194 smart_transfers_api: Box<dyn smart_transfers_api::SmartTransfersApi>,
195 staking_api: Box<dyn staking_api::StakingApi>,
196 tokenization_api: Box<dyn tokenization_api::TokenizationApi>,
197 transactions_api: Box<dyn transactions_api::TransactionsApi>,
198 vaults_api: Box<dyn vaults_api::VaultsApi>,
199 webhooks_api: Box<dyn webhooks_api::WebhooksApi>,
200 webhooks_v2_beta_api: Box<dyn webhooks_v2_beta_api::WebhooksV2BetaApi>,
201 whitelisted_contracts_api: Box<dyn whitelisted_contracts_api::WhitelistedContractsApi>,
202 whitelisted_external_wallets_api:
203 Box<dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi>,
204 whitelisted_internal_wallets_api:
205 Box<dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi>,
206 workspace_management_api: Box<dyn workspace_management_api::WorkspaceManagementApi>,
207}
208
209impl ApiClient {
210 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
211 Self {
212 blockchains_assets_api: Box::new(
213 blockchains_assets_api::BlockchainsAssetsApiClient::new(configuration.clone()),
214 ),
215 blockchains_assets_beta_api: Box::new(
216 blockchains_assets_beta_api::BlockchainsAssetsBetaApiClient::new(
217 configuration.clone(),
218 ),
219 ),
220 compliance_api: Box::new(compliance_api::ComplianceApiClient::new(
221 configuration.clone(),
222 )),
223 contract_interactions_api: Box::new(
224 contract_interactions_api::ContractInteractionsApiClient::new(
225 configuration.clone(),
226 ),
227 ),
228 contract_templates_api: Box::new(
229 contract_templates_api::ContractTemplatesApiClient::new(configuration.clone()),
230 ),
231 d_app_connections_api: Box::new(d_app_connections_api::DAppConnectionsApiClient::new(
232 configuration.clone(),
233 )),
234 deployed_contracts_api: Box::new(
235 deployed_contracts_api::DeployedContractsApiClient::new(configuration.clone()),
236 ),
237 exchange_accounts_api: Box::new(exchange_accounts_api::ExchangeAccountsApiClient::new(
238 configuration.clone(),
239 )),
240 fiat_accounts_api: Box::new(fiat_accounts_api::FiatAccountsApiClient::new(
241 configuration.clone(),
242 )),
243 fireblocks_network_api: Box::new(
244 fireblocks_network_api::FireblocksNetworkApiClient::new(configuration.clone()),
245 ),
246 gas_station_api: Box::new(gas_station_api::GasStationApiClient::new(
247 configuration.clone(),
248 )),
249 job_management_api: Box::new(job_management_api::JobManagementApiClient::new(
250 configuration.clone(),
251 )),
252 key_link_beta_api: Box::new(key_link_beta_api::KeyLinkBetaApiClient::new(
253 configuration.clone(),
254 )),
255 keys_beta_api: Box::new(keys_beta_api::KeysBetaApiClient::new(configuration.clone())),
256 nfts_api: Box::new(nfts_api::NftsApiClient::new(configuration.clone())),
257 off_exchange_api: Box::new(off_exchange_api::OffExchangeApiClient::new(
258 configuration.clone(),
259 )),
260 payments_payout_api: Box::new(payments_payout_api::PaymentsPayoutApiClient::new(
261 configuration.clone(),
262 )),
263 policy_editor_beta_api: Box::new(
264 policy_editor_beta_api::PolicyEditorBetaApiClient::new(configuration.clone()),
265 ),
266 smart_transfers_api: Box::new(smart_transfers_api::SmartTransfersApiClient::new(
267 configuration.clone(),
268 )),
269 staking_api: Box::new(staking_api::StakingApiClient::new(configuration.clone())),
270 tokenization_api: Box::new(tokenization_api::TokenizationApiClient::new(
271 configuration.clone(),
272 )),
273 transactions_api: Box::new(transactions_api::TransactionsApiClient::new(
274 configuration.clone(),
275 )),
276 vaults_api: Box::new(vaults_api::VaultsApiClient::new(configuration.clone())),
277 webhooks_api: Box::new(webhooks_api::WebhooksApiClient::new(configuration.clone())),
278 webhooks_v2_beta_api: Box::new(webhooks_v2_beta_api::WebhooksV2BetaApiClient::new(
279 configuration.clone(),
280 )),
281 whitelisted_contracts_api: Box::new(
282 whitelisted_contracts_api::WhitelistedContractsApiClient::new(
283 configuration.clone(),
284 ),
285 ),
286 whitelisted_external_wallets_api: Box::new(
287 whitelisted_external_wallets_api::WhitelistedExternalWalletsApiClient::new(
288 configuration.clone(),
289 ),
290 ),
291 whitelisted_internal_wallets_api: Box::new(
292 whitelisted_internal_wallets_api::WhitelistedInternalWalletsApiClient::new(
293 configuration.clone(),
294 ),
295 ),
296 workspace_management_api: Box::new(
297 workspace_management_api::WorkspaceManagementApiClient::new(configuration.clone()),
298 ),
299 }
300 }
301}
302
303impl Api for ApiClient {
304 fn blockchains_assets_api(&self) -> &dyn blockchains_assets_api::BlockchainsAssetsApi {
305 self.blockchains_assets_api.as_ref()
306 }
307
308 fn blockchains_assets_beta_api(
309 &self,
310 ) -> &dyn blockchains_assets_beta_api::BlockchainsAssetsBetaApi {
311 self.blockchains_assets_beta_api.as_ref()
312 }
313
314 fn compliance_api(&self) -> &dyn compliance_api::ComplianceApi {
315 self.compliance_api.as_ref()
316 }
317
318 fn contract_interactions_api(&self) -> &dyn contract_interactions_api::ContractInteractionsApi {
319 self.contract_interactions_api.as_ref()
320 }
321
322 fn contract_templates_api(&self) -> &dyn contract_templates_api::ContractTemplatesApi {
323 self.contract_templates_api.as_ref()
324 }
325
326 fn d_app_connections_api(&self) -> &dyn d_app_connections_api::DAppConnectionsApi {
327 self.d_app_connections_api.as_ref()
328 }
329
330 fn deployed_contracts_api(&self) -> &dyn deployed_contracts_api::DeployedContractsApi {
331 self.deployed_contracts_api.as_ref()
332 }
333
334 fn exchange_accounts_api(&self) -> &dyn exchange_accounts_api::ExchangeAccountsApi {
335 self.exchange_accounts_api.as_ref()
336 }
337
338 fn fiat_accounts_api(&self) -> &dyn fiat_accounts_api::FiatAccountsApi {
339 self.fiat_accounts_api.as_ref()
340 }
341
342 fn fireblocks_network_api(&self) -> &dyn fireblocks_network_api::FireblocksNetworkApi {
343 self.fireblocks_network_api.as_ref()
344 }
345
346 fn gas_station_api(&self) -> &dyn gas_station_api::GasStationApi {
347 self.gas_station_api.as_ref()
348 }
349
350 fn job_management_api(&self) -> &dyn job_management_api::JobManagementApi {
351 self.job_management_api.as_ref()
352 }
353
354 fn key_link_beta_api(&self) -> &dyn key_link_beta_api::KeyLinkBetaApi {
355 self.key_link_beta_api.as_ref()
356 }
357
358 fn keys_beta_api(&self) -> &dyn keys_beta_api::KeysBetaApi {
359 self.keys_beta_api.as_ref()
360 }
361
362 fn nfts_api(&self) -> &dyn nfts_api::NftsApi {
363 self.nfts_api.as_ref()
364 }
365
366 fn off_exchange_api(&self) -> &dyn off_exchange_api::OffExchangeApi {
367 self.off_exchange_api.as_ref()
368 }
369
370 fn payments_payout_api(&self) -> &dyn payments_payout_api::PaymentsPayoutApi {
371 self.payments_payout_api.as_ref()
372 }
373
374 fn policy_editor_beta_api(&self) -> &dyn policy_editor_beta_api::PolicyEditorBetaApi {
375 self.policy_editor_beta_api.as_ref()
376 }
377
378 fn smart_transfers_api(&self) -> &dyn smart_transfers_api::SmartTransfersApi {
379 self.smart_transfers_api.as_ref()
380 }
381
382 fn staking_api(&self) -> &dyn staking_api::StakingApi {
383 self.staking_api.as_ref()
384 }
385
386 fn tokenization_api(&self) -> &dyn tokenization_api::TokenizationApi {
387 self.tokenization_api.as_ref()
388 }
389
390 fn transactions_api(&self) -> &dyn transactions_api::TransactionsApi {
391 self.transactions_api.as_ref()
392 }
393
394 fn vaults_api(&self) -> &dyn vaults_api::VaultsApi {
395 self.vaults_api.as_ref()
396 }
397
398 fn webhooks_api(&self) -> &dyn webhooks_api::WebhooksApi {
399 self.webhooks_api.as_ref()
400 }
401
402 fn webhooks_v2_beta_api(&self) -> &dyn webhooks_v2_beta_api::WebhooksV2BetaApi {
403 self.webhooks_v2_beta_api.as_ref()
404 }
405
406 fn whitelisted_contracts_api(&self) -> &dyn whitelisted_contracts_api::WhitelistedContractsApi {
407 self.whitelisted_contracts_api.as_ref()
408 }
409
410 fn whitelisted_external_wallets_api(
411 &self,
412 ) -> &dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi {
413 self.whitelisted_external_wallets_api.as_ref()
414 }
415
416 fn whitelisted_internal_wallets_api(
417 &self,
418 ) -> &dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi {
419 self.whitelisted_internal_wallets_api.as_ref()
420 }
421
422 fn workspace_management_api(&self) -> &dyn workspace_management_api::WorkspaceManagementApi {
423 self.workspace_management_api.as_ref()
424 }
425}