bitwarden_api_key_connector/apis/
mod.rs1use 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}