bitwarden_api_key_connector/apis/
mod.rs

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