bitwarden_api_api/apis/
provider_organizations_api.rs

1/*
2 * Bitwarden Internal API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: latest
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use std::sync::Arc;
12
13use async_trait::async_trait;
14#[cfg(feature = "mockall")]
15use mockall::automock;
16use reqwest;
17use serde::{Deserialize, Serialize, de::Error as _};
18
19use super::{Error, configuration};
20use crate::{
21    apis::{AuthRequired, ContentType, ResponseContent},
22    models,
23};
24
25#[cfg_attr(feature = "mockall", automock)]
26#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
27#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
28pub trait ProviderOrganizationsApi: Send + Sync {
29    /// POST /providers/{providerId}/organizations/add
30    async fn add<'a>(
31        &self,
32        provider_id: uuid::Uuid,
33        provider_organization_add_request_model: Option<
34            models::ProviderOrganizationAddRequestModel,
35        >,
36    ) -> Result<(), Error<AddError>>;
37
38    /// DELETE /providers/{providerId}/organizations/{id}
39    async fn delete<'a>(
40        &self,
41        provider_id: uuid::Uuid,
42        id: uuid::Uuid,
43    ) -> Result<(), Error<DeleteError>>;
44
45    /// GET /providers/{providerId}/organizations
46    async fn get<'a>(
47        &self,
48        provider_id: uuid::Uuid,
49    ) -> Result<
50        models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel,
51        Error<GetError>,
52    >;
53
54    /// POST /providers/{providerId}/organizations
55    async fn post<'a>(
56        &self,
57        provider_id: uuid::Uuid,
58        provider_organization_create_request_model: Option<
59            models::ProviderOrganizationCreateRequestModel,
60        >,
61    ) -> Result<models::ProviderOrganizationResponseModel, Error<PostError>>;
62}
63
64pub struct ProviderOrganizationsApiClient {
65    configuration: Arc<configuration::Configuration>,
66}
67
68impl ProviderOrganizationsApiClient {
69    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
70        Self { configuration }
71    }
72}
73
74#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
75#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
76impl ProviderOrganizationsApi for ProviderOrganizationsApiClient {
77    async fn add<'a>(
78        &self,
79        provider_id: uuid::Uuid,
80        provider_organization_add_request_model: Option<
81            models::ProviderOrganizationAddRequestModel,
82        >,
83    ) -> Result<(), Error<AddError>> {
84        let local_var_configuration = &self.configuration;
85
86        let local_var_client = &local_var_configuration.client;
87
88        let local_var_uri_str = format!(
89            "{}/providers/{providerId}/organizations/add",
90            local_var_configuration.base_path,
91            providerId = provider_id
92        );
93        let mut local_var_req_builder =
94            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
95
96        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
97            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
98        };
99        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
100        local_var_req_builder =
101            local_var_req_builder.json(&provider_organization_add_request_model);
102
103        let local_var_req = local_var_req_builder.build()?;
104        let local_var_resp = local_var_client.execute(local_var_req).await?;
105
106        let local_var_status = local_var_resp.status();
107        let local_var_content = local_var_resp.text().await?;
108
109        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
110            Ok(())
111        } else {
112            let local_var_entity: Option<AddError> = serde_json::from_str(&local_var_content).ok();
113            let local_var_error = ResponseContent {
114                status: local_var_status,
115                content: local_var_content,
116                entity: local_var_entity,
117            };
118            Err(Error::ResponseError(local_var_error))
119        }
120    }
121
122    async fn delete<'a>(
123        &self,
124        provider_id: uuid::Uuid,
125        id: uuid::Uuid,
126    ) -> Result<(), Error<DeleteError>> {
127        let local_var_configuration = &self.configuration;
128
129        let local_var_client = &local_var_configuration.client;
130
131        let local_var_uri_str = format!(
132            "{}/providers/{providerId}/organizations/{id}",
133            local_var_configuration.base_path,
134            providerId = provider_id,
135            id = id
136        );
137        let mut local_var_req_builder =
138            local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
139
140        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
141            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
142        };
143        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
144
145        let local_var_req = local_var_req_builder.build()?;
146        let local_var_resp = local_var_client.execute(local_var_req).await?;
147
148        let local_var_status = local_var_resp.status();
149        let local_var_content = local_var_resp.text().await?;
150
151        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
152            Ok(())
153        } else {
154            let local_var_entity: Option<DeleteError> =
155                serde_json::from_str(&local_var_content).ok();
156            let local_var_error = ResponseContent {
157                status: local_var_status,
158                content: local_var_content,
159                entity: local_var_entity,
160            };
161            Err(Error::ResponseError(local_var_error))
162        }
163    }
164
165    async fn get<'a>(
166        &self,
167        provider_id: uuid::Uuid,
168    ) -> Result<
169        models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel,
170        Error<GetError>,
171    > {
172        let local_var_configuration = &self.configuration;
173
174        let local_var_client = &local_var_configuration.client;
175
176        let local_var_uri_str = format!(
177            "{}/providers/{providerId}/organizations",
178            local_var_configuration.base_path,
179            providerId = provider_id
180        );
181        let mut local_var_req_builder =
182            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
183
184        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
185            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
186        };
187        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
188
189        let local_var_req = local_var_req_builder.build()?;
190        let local_var_resp = local_var_client.execute(local_var_req).await?;
191
192        let local_var_status = local_var_resp.status();
193        let local_var_content_type = local_var_resp
194            .headers()
195            .get("content-type")
196            .and_then(|v| v.to_str().ok())
197            .unwrap_or("application/octet-stream");
198        let local_var_content_type = super::ContentType::from(local_var_content_type);
199        let local_var_content = local_var_resp.text().await?;
200
201        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
202            match local_var_content_type {
203                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
204                ContentType::Text => {
205                    return Err(Error::from(serde_json::Error::custom(
206                        "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`",
207                    )));
208                }
209                ContentType::Unsupported(local_var_unknown_type) => {
210                    return Err(Error::from(serde_json::Error::custom(format!(
211                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`"
212                    ))));
213                }
214            }
215        } else {
216            let local_var_entity: Option<GetError> = serde_json::from_str(&local_var_content).ok();
217            let local_var_error = ResponseContent {
218                status: local_var_status,
219                content: local_var_content,
220                entity: local_var_entity,
221            };
222            Err(Error::ResponseError(local_var_error))
223        }
224    }
225
226    async fn post<'a>(
227        &self,
228        provider_id: uuid::Uuid,
229        provider_organization_create_request_model: Option<
230            models::ProviderOrganizationCreateRequestModel,
231        >,
232    ) -> Result<models::ProviderOrganizationResponseModel, Error<PostError>> {
233        let local_var_configuration = &self.configuration;
234
235        let local_var_client = &local_var_configuration.client;
236
237        let local_var_uri_str = format!(
238            "{}/providers/{providerId}/organizations",
239            local_var_configuration.base_path,
240            providerId = provider_id
241        );
242        let mut local_var_req_builder =
243            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
244
245        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
246            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
247        };
248        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
249        local_var_req_builder =
250            local_var_req_builder.json(&provider_organization_create_request_model);
251
252        let local_var_req = local_var_req_builder.build()?;
253        let local_var_resp = local_var_client.execute(local_var_req).await?;
254
255        let local_var_status = local_var_resp.status();
256        let local_var_content_type = local_var_resp
257            .headers()
258            .get("content-type")
259            .and_then(|v| v.to_str().ok())
260            .unwrap_or("application/octet-stream");
261        let local_var_content_type = super::ContentType::from(local_var_content_type);
262        let local_var_content = local_var_resp.text().await?;
263
264        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
265            match local_var_content_type {
266                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
267                ContentType::Text => {
268                    return Err(Error::from(serde_json::Error::custom(
269                        "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`",
270                    )));
271                }
272                ContentType::Unsupported(local_var_unknown_type) => {
273                    return Err(Error::from(serde_json::Error::custom(format!(
274                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`"
275                    ))));
276                }
277            }
278        } else {
279            let local_var_entity: Option<PostError> = serde_json::from_str(&local_var_content).ok();
280            let local_var_error = ResponseContent {
281                status: local_var_status,
282                content: local_var_content,
283                entity: local_var_entity,
284            };
285            Err(Error::ResponseError(local_var_error))
286        }
287    }
288}
289
290/// struct for typed errors of method [`ProviderOrganizationsApi::add`]
291#[derive(Debug, Clone, Serialize, Deserialize)]
292#[serde(untagged)]
293pub enum AddError {
294    UnknownValue(serde_json::Value),
295}
296/// struct for typed errors of method [`ProviderOrganizationsApi::delete`]
297#[derive(Debug, Clone, Serialize, Deserialize)]
298#[serde(untagged)]
299pub enum DeleteError {
300    UnknownValue(serde_json::Value),
301}
302/// struct for typed errors of method [`ProviderOrganizationsApi::get`]
303#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(untagged)]
305pub enum GetError {
306    UnknownValue(serde_json::Value),
307}
308/// struct for typed errors of method [`ProviderOrganizationsApi::post`]
309#[derive(Debug, Clone, Serialize, Deserialize)]
310#[serde(untagged)]
311pub enum PostError {
312    UnknownValue(serde_json::Value),
313}