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
103#[allow(dead_code)]
106enum ContentType {
107 Json,
108 Text,
109 Unsupported(String),
110}
111
112impl From<&str> for ContentType {
113 fn from(content_type: &str) -> Self {
114 if content_type.starts_with("application") && content_type.contains("json") {
115 return Self::Json;
116 } else if content_type.starts_with("text/plain") {
117 return Self::Text;
118 } else {
119 return Self::Unsupported(content_type.to_string());
120 }
121 }
122}
123
124pub mod blockchains_assets_api;
125pub mod compliance_api;
126pub mod connected_accounts_beta_api;
127pub mod contract_interactions_api;
128pub mod contract_templates_api;
129pub mod d_app_connections_api;
130pub mod deployed_contracts_api;
131pub mod exchange_accounts_api;
132pub mod fiat_accounts_api;
133pub mod fireblocks_network_api;
134pub mod gas_station_api;
135pub mod job_management_api;
136pub mod key_link_api;
137pub mod keys_beta_api;
138pub mod nfts_api;
139pub mod off_exchange_api;
140pub mod payments_payout_api;
141pub mod policy_editor_beta_api;
142pub mod policy_editor_v2_beta_api;
143pub mod smart_transfers_api;
144pub mod staking_api;
145pub mod tags_api;
146pub mod tokenization_api;
147pub mod trading_beta_api;
148pub mod transactions_api;
149pub mod vaults_api;
150pub mod webhooks_api;
151pub mod webhooks_v2_api;
152pub mod whitelisted_contracts_api;
153pub mod whitelisted_external_wallets_api;
154pub mod whitelisted_internal_wallets_api;
155pub mod workspace_management_api;
156
157pub mod configuration;
158
159use std::sync::Arc;
160
161pub trait Api {
162 fn blockchains_assets_api(&self) -> &dyn blockchains_assets_api::BlockchainsAssetsApi;
163 fn compliance_api(&self) -> &dyn compliance_api::ComplianceApi;
164 fn connected_accounts_beta_api(
165 &self,
166 ) -> &dyn connected_accounts_beta_api::ConnectedAccountsBetaApi;
167 fn contract_interactions_api(&self) -> &dyn contract_interactions_api::ContractInteractionsApi;
168 fn contract_templates_api(&self) -> &dyn contract_templates_api::ContractTemplatesApi;
169 fn d_app_connections_api(&self) -> &dyn d_app_connections_api::DAppConnectionsApi;
170 fn deployed_contracts_api(&self) -> &dyn deployed_contracts_api::DeployedContractsApi;
171 fn exchange_accounts_api(&self) -> &dyn exchange_accounts_api::ExchangeAccountsApi;
172 fn fiat_accounts_api(&self) -> &dyn fiat_accounts_api::FiatAccountsApi;
173 fn fireblocks_network_api(&self) -> &dyn fireblocks_network_api::FireblocksNetworkApi;
174 fn gas_station_api(&self) -> &dyn gas_station_api::GasStationApi;
175 fn job_management_api(&self) -> &dyn job_management_api::JobManagementApi;
176 fn key_link_api(&self) -> &dyn key_link_api::KeyLinkApi;
177 fn keys_beta_api(&self) -> &dyn keys_beta_api::KeysBetaApi;
178 fn nfts_api(&self) -> &dyn nfts_api::NftsApi;
179 fn off_exchange_api(&self) -> &dyn off_exchange_api::OffExchangeApi;
180 fn payments_payout_api(&self) -> &dyn payments_payout_api::PaymentsPayoutApi;
181 fn policy_editor_beta_api(&self) -> &dyn policy_editor_beta_api::PolicyEditorBetaApi;
182 fn policy_editor_v2_beta_api(&self) -> &dyn policy_editor_v2_beta_api::PolicyEditorV2BetaApi;
183 fn smart_transfers_api(&self) -> &dyn smart_transfers_api::SmartTransfersApi;
184 fn staking_api(&self) -> &dyn staking_api::StakingApi;
185 fn tags_api(&self) -> &dyn tags_api::TagsApi;
186 fn tokenization_api(&self) -> &dyn tokenization_api::TokenizationApi;
187 fn trading_beta_api(&self) -> &dyn trading_beta_api::TradingBetaApi;
188 fn transactions_api(&self) -> &dyn transactions_api::TransactionsApi;
189 fn vaults_api(&self) -> &dyn vaults_api::VaultsApi;
190 fn webhooks_api(&self) -> &dyn webhooks_api::WebhooksApi;
191 fn webhooks_v2_api(&self) -> &dyn webhooks_v2_api::WebhooksV2Api;
192 fn whitelisted_contracts_api(&self) -> &dyn whitelisted_contracts_api::WhitelistedContractsApi;
193 fn whitelisted_external_wallets_api(
194 &self,
195 ) -> &dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi;
196 fn whitelisted_internal_wallets_api(
197 &self,
198 ) -> &dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi;
199 fn workspace_management_api(&self) -> &dyn workspace_management_api::WorkspaceManagementApi;
200}
201
202pub struct ApiClient {
203 blockchains_assets_api: Box<dyn blockchains_assets_api::BlockchainsAssetsApi>,
204 compliance_api: Box<dyn compliance_api::ComplianceApi>,
205 connected_accounts_beta_api: Box<dyn connected_accounts_beta_api::ConnectedAccountsBetaApi>,
206 contract_interactions_api: Box<dyn contract_interactions_api::ContractInteractionsApi>,
207 contract_templates_api: Box<dyn contract_templates_api::ContractTemplatesApi>,
208 d_app_connections_api: Box<dyn d_app_connections_api::DAppConnectionsApi>,
209 deployed_contracts_api: Box<dyn deployed_contracts_api::DeployedContractsApi>,
210 exchange_accounts_api: Box<dyn exchange_accounts_api::ExchangeAccountsApi>,
211 fiat_accounts_api: Box<dyn fiat_accounts_api::FiatAccountsApi>,
212 fireblocks_network_api: Box<dyn fireblocks_network_api::FireblocksNetworkApi>,
213 gas_station_api: Box<dyn gas_station_api::GasStationApi>,
214 job_management_api: Box<dyn job_management_api::JobManagementApi>,
215 key_link_api: Box<dyn key_link_api::KeyLinkApi>,
216 keys_beta_api: Box<dyn keys_beta_api::KeysBetaApi>,
217 nfts_api: Box<dyn nfts_api::NftsApi>,
218 off_exchange_api: Box<dyn off_exchange_api::OffExchangeApi>,
219 payments_payout_api: Box<dyn payments_payout_api::PaymentsPayoutApi>,
220 policy_editor_beta_api: Box<dyn policy_editor_beta_api::PolicyEditorBetaApi>,
221 policy_editor_v2_beta_api: Box<dyn policy_editor_v2_beta_api::PolicyEditorV2BetaApi>,
222 smart_transfers_api: Box<dyn smart_transfers_api::SmartTransfersApi>,
223 staking_api: Box<dyn staking_api::StakingApi>,
224 tags_api: Box<dyn tags_api::TagsApi>,
225 tokenization_api: Box<dyn tokenization_api::TokenizationApi>,
226 trading_beta_api: Box<dyn trading_beta_api::TradingBetaApi>,
227 transactions_api: Box<dyn transactions_api::TransactionsApi>,
228 vaults_api: Box<dyn vaults_api::VaultsApi>,
229 webhooks_api: Box<dyn webhooks_api::WebhooksApi>,
230 webhooks_v2_api: Box<dyn webhooks_v2_api::WebhooksV2Api>,
231 whitelisted_contracts_api: Box<dyn whitelisted_contracts_api::WhitelistedContractsApi>,
232 whitelisted_external_wallets_api:
233 Box<dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi>,
234 whitelisted_internal_wallets_api:
235 Box<dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi>,
236 workspace_management_api: Box<dyn workspace_management_api::WorkspaceManagementApi>,
237}
238
239impl ApiClient {
240 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
241 Self {
242 blockchains_assets_api: Box::new(
243 blockchains_assets_api::BlockchainsAssetsApiClient::new(configuration.clone()),
244 ),
245 compliance_api: Box::new(compliance_api::ComplianceApiClient::new(
246 configuration.clone(),
247 )),
248 connected_accounts_beta_api: Box::new(
249 connected_accounts_beta_api::ConnectedAccountsBetaApiClient::new(
250 configuration.clone(),
251 ),
252 ),
253 contract_interactions_api: Box::new(
254 contract_interactions_api::ContractInteractionsApiClient::new(
255 configuration.clone(),
256 ),
257 ),
258 contract_templates_api: Box::new(
259 contract_templates_api::ContractTemplatesApiClient::new(configuration.clone()),
260 ),
261 d_app_connections_api: Box::new(d_app_connections_api::DAppConnectionsApiClient::new(
262 configuration.clone(),
263 )),
264 deployed_contracts_api: Box::new(
265 deployed_contracts_api::DeployedContractsApiClient::new(configuration.clone()),
266 ),
267 exchange_accounts_api: Box::new(exchange_accounts_api::ExchangeAccountsApiClient::new(
268 configuration.clone(),
269 )),
270 fiat_accounts_api: Box::new(fiat_accounts_api::FiatAccountsApiClient::new(
271 configuration.clone(),
272 )),
273 fireblocks_network_api: Box::new(
274 fireblocks_network_api::FireblocksNetworkApiClient::new(configuration.clone()),
275 ),
276 gas_station_api: Box::new(gas_station_api::GasStationApiClient::new(
277 configuration.clone(),
278 )),
279 job_management_api: Box::new(job_management_api::JobManagementApiClient::new(
280 configuration.clone(),
281 )),
282 key_link_api: Box::new(key_link_api::KeyLinkApiClient::new(configuration.clone())),
283 keys_beta_api: Box::new(keys_beta_api::KeysBetaApiClient::new(configuration.clone())),
284 nfts_api: Box::new(nfts_api::NftsApiClient::new(configuration.clone())),
285 off_exchange_api: Box::new(off_exchange_api::OffExchangeApiClient::new(
286 configuration.clone(),
287 )),
288 payments_payout_api: Box::new(payments_payout_api::PaymentsPayoutApiClient::new(
289 configuration.clone(),
290 )),
291 policy_editor_beta_api: Box::new(
292 policy_editor_beta_api::PolicyEditorBetaApiClient::new(configuration.clone()),
293 ),
294 policy_editor_v2_beta_api: Box::new(
295 policy_editor_v2_beta_api::PolicyEditorV2BetaApiClient::new(configuration.clone()),
296 ),
297 smart_transfers_api: Box::new(smart_transfers_api::SmartTransfersApiClient::new(
298 configuration.clone(),
299 )),
300 staking_api: Box::new(staking_api::StakingApiClient::new(configuration.clone())),
301 tags_api: Box::new(tags_api::TagsApiClient::new(configuration.clone())),
302 tokenization_api: Box::new(tokenization_api::TokenizationApiClient::new(
303 configuration.clone(),
304 )),
305 trading_beta_api: Box::new(trading_beta_api::TradingBetaApiClient::new(
306 configuration.clone(),
307 )),
308 transactions_api: Box::new(transactions_api::TransactionsApiClient::new(
309 configuration.clone(),
310 )),
311 vaults_api: Box::new(vaults_api::VaultsApiClient::new(configuration.clone())),
312 webhooks_api: Box::new(webhooks_api::WebhooksApiClient::new(configuration.clone())),
313 webhooks_v2_api: Box::new(webhooks_v2_api::WebhooksV2ApiClient::new(
314 configuration.clone(),
315 )),
316 whitelisted_contracts_api: Box::new(
317 whitelisted_contracts_api::WhitelistedContractsApiClient::new(
318 configuration.clone(),
319 ),
320 ),
321 whitelisted_external_wallets_api: Box::new(
322 whitelisted_external_wallets_api::WhitelistedExternalWalletsApiClient::new(
323 configuration.clone(),
324 ),
325 ),
326 whitelisted_internal_wallets_api: Box::new(
327 whitelisted_internal_wallets_api::WhitelistedInternalWalletsApiClient::new(
328 configuration.clone(),
329 ),
330 ),
331 workspace_management_api: Box::new(
332 workspace_management_api::WorkspaceManagementApiClient::new(configuration.clone()),
333 ),
334 }
335 }
336}
337
338impl Api for ApiClient {
339 fn blockchains_assets_api(&self) -> &dyn blockchains_assets_api::BlockchainsAssetsApi {
340 self.blockchains_assets_api.as_ref()
341 }
342
343 fn compliance_api(&self) -> &dyn compliance_api::ComplianceApi {
344 self.compliance_api.as_ref()
345 }
346
347 fn connected_accounts_beta_api(
348 &self,
349 ) -> &dyn connected_accounts_beta_api::ConnectedAccountsBetaApi {
350 self.connected_accounts_beta_api.as_ref()
351 }
352
353 fn contract_interactions_api(&self) -> &dyn contract_interactions_api::ContractInteractionsApi {
354 self.contract_interactions_api.as_ref()
355 }
356
357 fn contract_templates_api(&self) -> &dyn contract_templates_api::ContractTemplatesApi {
358 self.contract_templates_api.as_ref()
359 }
360
361 fn d_app_connections_api(&self) -> &dyn d_app_connections_api::DAppConnectionsApi {
362 self.d_app_connections_api.as_ref()
363 }
364
365 fn deployed_contracts_api(&self) -> &dyn deployed_contracts_api::DeployedContractsApi {
366 self.deployed_contracts_api.as_ref()
367 }
368
369 fn exchange_accounts_api(&self) -> &dyn exchange_accounts_api::ExchangeAccountsApi {
370 self.exchange_accounts_api.as_ref()
371 }
372
373 fn fiat_accounts_api(&self) -> &dyn fiat_accounts_api::FiatAccountsApi {
374 self.fiat_accounts_api.as_ref()
375 }
376
377 fn fireblocks_network_api(&self) -> &dyn fireblocks_network_api::FireblocksNetworkApi {
378 self.fireblocks_network_api.as_ref()
379 }
380
381 fn gas_station_api(&self) -> &dyn gas_station_api::GasStationApi {
382 self.gas_station_api.as_ref()
383 }
384
385 fn job_management_api(&self) -> &dyn job_management_api::JobManagementApi {
386 self.job_management_api.as_ref()
387 }
388
389 fn key_link_api(&self) -> &dyn key_link_api::KeyLinkApi {
390 self.key_link_api.as_ref()
391 }
392
393 fn keys_beta_api(&self) -> &dyn keys_beta_api::KeysBetaApi {
394 self.keys_beta_api.as_ref()
395 }
396
397 fn nfts_api(&self) -> &dyn nfts_api::NftsApi {
398 self.nfts_api.as_ref()
399 }
400
401 fn off_exchange_api(&self) -> &dyn off_exchange_api::OffExchangeApi {
402 self.off_exchange_api.as_ref()
403 }
404
405 fn payments_payout_api(&self) -> &dyn payments_payout_api::PaymentsPayoutApi {
406 self.payments_payout_api.as_ref()
407 }
408
409 fn policy_editor_beta_api(&self) -> &dyn policy_editor_beta_api::PolicyEditorBetaApi {
410 self.policy_editor_beta_api.as_ref()
411 }
412
413 fn policy_editor_v2_beta_api(&self) -> &dyn policy_editor_v2_beta_api::PolicyEditorV2BetaApi {
414 self.policy_editor_v2_beta_api.as_ref()
415 }
416
417 fn smart_transfers_api(&self) -> &dyn smart_transfers_api::SmartTransfersApi {
418 self.smart_transfers_api.as_ref()
419 }
420
421 fn staking_api(&self) -> &dyn staking_api::StakingApi {
422 self.staking_api.as_ref()
423 }
424
425 fn tags_api(&self) -> &dyn tags_api::TagsApi {
426 self.tags_api.as_ref()
427 }
428
429 fn tokenization_api(&self) -> &dyn tokenization_api::TokenizationApi {
430 self.tokenization_api.as_ref()
431 }
432
433 fn trading_beta_api(&self) -> &dyn trading_beta_api::TradingBetaApi {
434 self.trading_beta_api.as_ref()
435 }
436
437 fn transactions_api(&self) -> &dyn transactions_api::TransactionsApi {
438 self.transactions_api.as_ref()
439 }
440
441 fn vaults_api(&self) -> &dyn vaults_api::VaultsApi {
442 self.vaults_api.as_ref()
443 }
444
445 fn webhooks_api(&self) -> &dyn webhooks_api::WebhooksApi {
446 self.webhooks_api.as_ref()
447 }
448
449 fn webhooks_v2_api(&self) -> &dyn webhooks_v2_api::WebhooksV2Api {
450 self.webhooks_v2_api.as_ref()
451 }
452
453 fn whitelisted_contracts_api(&self) -> &dyn whitelisted_contracts_api::WhitelistedContractsApi {
454 self.whitelisted_contracts_api.as_ref()
455 }
456
457 fn whitelisted_external_wallets_api(
458 &self,
459 ) -> &dyn whitelisted_external_wallets_api::WhitelistedExternalWalletsApi {
460 self.whitelisted_external_wallets_api.as_ref()
461 }
462
463 fn whitelisted_internal_wallets_api(
464 &self,
465 ) -> &dyn whitelisted_internal_wallets_api::WhitelistedInternalWalletsApi {
466 self.whitelisted_internal_wallets_api.as_ref()
467 }
468
469 fn workspace_management_api(&self) -> &dyn workspace_management_api::WorkspaceManagementApi {
470 self.workspace_management_api.as_ref()
471 }
472}