bitwarden_api_identity/apis/
mod.rs1pub use bitwarden_api_base::*;
3
4pub mod accounts_api;
5pub mod info_api;
6pub mod sso_api;
7
8pub mod configuration {
10 pub use bitwarden_api_base::Configuration;
11}
12
13use std::sync::Arc;
14
15#[allow(clippy::large_enum_variant, private_interfaces)]
16pub enum ApiClient {
17 Real(ApiClientReal),
18 #[cfg(feature = "mockall")]
19 Mock(ApiClientMock),
20}
21
22struct ApiClientReal {
23 accounts_api: accounts_api::AccountsApiClient,
24 info_api: info_api::InfoApiClient,
25 sso_api: sso_api::SsoApiClient,
26}
27
28#[cfg(feature = "mockall")]
29pub struct ApiClientMock {
30 pub accounts_api: accounts_api::MockAccountsApi,
31 pub info_api: info_api::MockInfoApi,
32 pub sso_api: sso_api::MockSsoApi,
33}
34
35impl ApiClient {
36 pub fn new(configuration: &Arc<bitwarden_api_base::Configuration>) -> Self {
37 Self::Real(ApiClientReal {
38 accounts_api: accounts_api::AccountsApiClient::new(configuration.clone()),
39 info_api: info_api::InfoApiClient::new(configuration.clone()),
40 sso_api: sso_api::SsoApiClient::new(configuration.clone()),
41 })
42 }
43
44 #[cfg(feature = "mockall")]
45 pub fn new_mocked(func: impl FnOnce(&mut ApiClientMock)) -> Self {
46 let mut mock = ApiClientMock {
47 accounts_api: accounts_api::MockAccountsApi::new(),
48 info_api: info_api::MockInfoApi::new(),
49 sso_api: sso_api::MockSsoApi::new(),
50 };
51 func(&mut mock);
52 Self::Mock(mock)
53 }
54}
55
56impl ApiClient {
57 pub fn accounts_api(&self) -> &dyn accounts_api::AccountsApi {
58 match self {
59 ApiClient::Real(real) => &real.accounts_api,
60 #[cfg(feature = "mockall")]
61 ApiClient::Mock(mock) => &mock.accounts_api,
62 }
63 }
64 pub fn info_api(&self) -> &dyn info_api::InfoApi {
65 match self {
66 ApiClient::Real(real) => &real.info_api,
67 #[cfg(feature = "mockall")]
68 ApiClient::Mock(mock) => &mock.info_api,
69 }
70 }
71 pub fn sso_api(&self) -> &dyn sso_api::SsoApi {
72 match self {
73 ApiClient::Real(real) => &real.sso_api,
74 #[cfg(feature = "mockall")]
75 ApiClient::Mock(mock) => &mock.sso_api,
76 }
77 }
78}