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::{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_user_agent) = local_var_configuration.user_agent {
97            local_var_req_builder = local_var_req_builder
98                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
99        }
100        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
101            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
102        };
103        local_var_req_builder =
104            local_var_req_builder.json(&provider_organization_add_request_model);
105
106        let local_var_req = local_var_req_builder.build()?;
107        let local_var_resp = local_var_client.execute(local_var_req).await?;
108
109        let local_var_status = local_var_resp.status();
110        let local_var_content = local_var_resp.text().await?;
111
112        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
113            Ok(())
114        } else {
115            let local_var_entity: Option<AddError> = serde_json::from_str(&local_var_content).ok();
116            let local_var_error = ResponseContent {
117                status: local_var_status,
118                content: local_var_content,
119                entity: local_var_entity,
120            };
121            Err(Error::ResponseError(local_var_error))
122        }
123    }
124
125    async fn delete<'a>(
126        &self,
127        provider_id: uuid::Uuid,
128        id: uuid::Uuid,
129    ) -> Result<(), Error<DeleteError>> {
130        let local_var_configuration = &self.configuration;
131
132        let local_var_client = &local_var_configuration.client;
133
134        let local_var_uri_str = format!(
135            "{}/providers/{providerId}/organizations/{id}",
136            local_var_configuration.base_path,
137            providerId = provider_id,
138            id = id
139        );
140        let mut local_var_req_builder =
141            local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
142
143        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
144            local_var_req_builder = local_var_req_builder
145                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
146        }
147        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
148            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
149        };
150
151        let local_var_req = local_var_req_builder.build()?;
152        let local_var_resp = local_var_client.execute(local_var_req).await?;
153
154        let local_var_status = local_var_resp.status();
155        let local_var_content = local_var_resp.text().await?;
156
157        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
158            Ok(())
159        } else {
160            let local_var_entity: Option<DeleteError> =
161                serde_json::from_str(&local_var_content).ok();
162            let local_var_error = ResponseContent {
163                status: local_var_status,
164                content: local_var_content,
165                entity: local_var_entity,
166            };
167            Err(Error::ResponseError(local_var_error))
168        }
169    }
170
171    async fn get<'a>(
172        &self,
173        provider_id: uuid::Uuid,
174    ) -> Result<
175        models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel,
176        Error<GetError>,
177    > {
178        let local_var_configuration = &self.configuration;
179
180        let local_var_client = &local_var_configuration.client;
181
182        let local_var_uri_str = format!(
183            "{}/providers/{providerId}/organizations",
184            local_var_configuration.base_path,
185            providerId = provider_id
186        );
187        let mut local_var_req_builder =
188            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
189
190        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
191            local_var_req_builder = local_var_req_builder
192                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
193        }
194        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
195            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
196        };
197
198        let local_var_req = local_var_req_builder.build()?;
199        let local_var_resp = local_var_client.execute(local_var_req).await?;
200
201        let local_var_status = local_var_resp.status();
202        let local_var_content_type = local_var_resp
203            .headers()
204            .get("content-type")
205            .and_then(|v| v.to_str().ok())
206            .unwrap_or("application/octet-stream");
207        let local_var_content_type = super::ContentType::from(local_var_content_type);
208        let local_var_content = local_var_resp.text().await?;
209
210        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
211            match local_var_content_type {
212                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
213                ContentType::Text => {
214                    return Err(Error::from(serde_json::Error::custom(
215                        "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`",
216                    )));
217                }
218                ContentType::Unsupported(local_var_unknown_type) => {
219                    return Err(Error::from(serde_json::Error::custom(format!(
220                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`"
221                    ))));
222                }
223            }
224        } else {
225            let local_var_entity: Option<GetError> = serde_json::from_str(&local_var_content).ok();
226            let local_var_error = ResponseContent {
227                status: local_var_status,
228                content: local_var_content,
229                entity: local_var_entity,
230            };
231            Err(Error::ResponseError(local_var_error))
232        }
233    }
234
235    async fn post<'a>(
236        &self,
237        provider_id: uuid::Uuid,
238        provider_organization_create_request_model: Option<
239            models::ProviderOrganizationCreateRequestModel,
240        >,
241    ) -> Result<models::ProviderOrganizationResponseModel, Error<PostError>> {
242        let local_var_configuration = &self.configuration;
243
244        let local_var_client = &local_var_configuration.client;
245
246        let local_var_uri_str = format!(
247            "{}/providers/{providerId}/organizations",
248            local_var_configuration.base_path,
249            providerId = provider_id
250        );
251        let mut local_var_req_builder =
252            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
253
254        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
255            local_var_req_builder = local_var_req_builder
256                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
257        }
258        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
259            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
260        };
261        local_var_req_builder =
262            local_var_req_builder.json(&provider_organization_create_request_model);
263
264        let local_var_req = local_var_req_builder.build()?;
265        let local_var_resp = local_var_client.execute(local_var_req).await?;
266
267        let local_var_status = local_var_resp.status();
268        let local_var_content_type = local_var_resp
269            .headers()
270            .get("content-type")
271            .and_then(|v| v.to_str().ok())
272            .unwrap_or("application/octet-stream");
273        let local_var_content_type = super::ContentType::from(local_var_content_type);
274        let local_var_content = local_var_resp.text().await?;
275
276        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
277            match local_var_content_type {
278                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
279                ContentType::Text => {
280                    return Err(Error::from(serde_json::Error::custom(
281                        "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`",
282                    )));
283                }
284                ContentType::Unsupported(local_var_unknown_type) => {
285                    return Err(Error::from(serde_json::Error::custom(format!(
286                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`"
287                    ))));
288                }
289            }
290        } else {
291            let local_var_entity: Option<PostError> = serde_json::from_str(&local_var_content).ok();
292            let local_var_error = ResponseContent {
293                status: local_var_status,
294                content: local_var_content,
295                entity: local_var_entity,
296            };
297            Err(Error::ResponseError(local_var_error))
298        }
299    }
300}
301
302/// struct for typed errors of method [`ProviderOrganizationsApi::add`]
303#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(untagged)]
305pub enum AddError {
306    UnknownValue(serde_json::Value),
307}
308/// struct for typed errors of method [`ProviderOrganizationsApi::delete`]
309#[derive(Debug, Clone, Serialize, Deserialize)]
310#[serde(untagged)]
311pub enum DeleteError {
312    UnknownValue(serde_json::Value),
313}
314/// struct for typed errors of method [`ProviderOrganizationsApi::get`]
315#[derive(Debug, Clone, Serialize, Deserialize)]
316#[serde(untagged)]
317pub enum GetError {
318    UnknownValue(serde_json::Value),
319}
320/// struct for typed errors of method [`ProviderOrganizationsApi::post`]
321#[derive(Debug, Clone, Serialize, Deserialize)]
322#[serde(untagged)]
323pub enum PostError {
324    UnknownValue(serde_json::Value),
325}