bitwarden_api_key_connector/apis/
mod.rs

1use std::sync::Arc;
2
3use bitwarden_api_base::Configuration;
4
5pub mod user_keys_api;
6
7#[derive(Debug, Clone)]
8pub struct ResponseContent {
9    pub status: reqwest::StatusCode,
10    pub content: String,
11}
12
13#[allow(missing_docs)]
14#[derive(Debug)]
15pub enum Error {
16    Reqwest(reqwest::Error),
17    ReqwestMiddleware(reqwest_middleware::Error),
18    Serde(serde_json::Error),
19    Io(std::io::Error),
20    ResponseError(ResponseContent),
21}
22
23impl From<reqwest::Error> for Error {
24    fn from(e: reqwest::Error) -> Self {
25        Error::Reqwest(e)
26    }
27}
28
29impl From<reqwest_middleware::Error> for Error {
30    fn from(e: reqwest_middleware::Error) -> Self {
31        Error::ReqwestMiddleware(e)
32    }
33}
34
35impl From<serde_json::Error> for Error {
36    fn from(e: serde_json::Error) -> Self {
37        Error::Serde(e)
38    }
39}
40
41impl From<std::io::Error> for Error {
42    fn from(e: std::io::Error) -> Self {
43        Error::Io(e)
44    }
45}
46
47pub enum ApiClient {
48    Real(ApiClientReal),
49    Mock(ApiClientMock),
50}
51
52pub struct ApiClientReal {
53    user_keys_api: user_keys_api::UserKeysApiClient,
54}
55
56pub struct ApiClientMock {
57    pub user_keys_api: user_keys_api::MockUserKeysApi,
58}
59
60impl ApiClient {
61    pub fn new(configuration: &Arc<Configuration>) -> Self {
62        Self::Real(ApiClientReal {
63            user_keys_api: user_keys_api::UserKeysApiClient::new(configuration.clone()),
64        })
65    }
66
67    pub fn new_mocked(func: impl FnOnce(&mut ApiClientMock)) -> Self {
68        let mut mock = ApiClientMock {
69            user_keys_api: user_keys_api::MockUserKeysApi::new(),
70        };
71        func(&mut mock);
72        Self::Mock(mock)
73    }
74
75    pub fn user_keys_api(&self) -> &dyn user_keys_api::UserKeysApi {
76        match self {
77            ApiClient::Real(real) => &real.user_keys_api,
78            ApiClient::Mock(mock) => &mock.user_keys_api,
79        }
80    }
81}