bitwarden_api_api/apis/
organization_integration_configuration_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 OrganizationIntegrationConfigurationApi: Send + Sync {
29    /// POST /organizations/{organizationId}/integrations/{integrationId}/configurations
30    async fn create<'a>(
31        &self,
32        organization_id: uuid::Uuid,
33        integration_id: uuid::Uuid,
34        organization_integration_configuration_request_model: Option<
35            models::OrganizationIntegrationConfigurationRequestModel,
36        >,
37    ) -> Result<models::OrganizationIntegrationConfigurationResponseModel, Error<CreateError>>;
38
39    /// DELETE /organizations/{organizationId}/integrations/{integrationId}/configurations/
40    /// {configurationId}
41    async fn delete<'a>(
42        &self,
43        organization_id: uuid::Uuid,
44        integration_id: uuid::Uuid,
45        configuration_id: uuid::Uuid,
46    ) -> Result<(), Error<DeleteError>>;
47
48    /// GET /organizations/{organizationId}/integrations/{integrationId}/configurations
49    async fn get<'a>(
50        &self,
51        organization_id: uuid::Uuid,
52        integration_id: uuid::Uuid,
53    ) -> Result<Vec<models::OrganizationIntegrationConfigurationResponseModel>, Error<GetError>>;
54
55    /// PUT /organizations/{organizationId}/integrations/{integrationId}/configurations/
56    /// {configurationId}
57    async fn update<'a>(
58        &self,
59        organization_id: uuid::Uuid,
60        integration_id: uuid::Uuid,
61        configuration_id: uuid::Uuid,
62        organization_integration_configuration_request_model: Option<
63            models::OrganizationIntegrationConfigurationRequestModel,
64        >,
65    ) -> Result<models::OrganizationIntegrationConfigurationResponseModel, Error<UpdateError>>;
66}
67
68pub struct OrganizationIntegrationConfigurationApiClient {
69    configuration: Arc<configuration::Configuration>,
70}
71
72impl OrganizationIntegrationConfigurationApiClient {
73    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
74        Self { configuration }
75    }
76}
77
78#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
79#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
80impl OrganizationIntegrationConfigurationApi for OrganizationIntegrationConfigurationApiClient {
81    async fn create<'a>(
82        &self,
83        organization_id: uuid::Uuid,
84        integration_id: uuid::Uuid,
85        organization_integration_configuration_request_model: Option<
86            models::OrganizationIntegrationConfigurationRequestModel,
87        >,
88    ) -> Result<models::OrganizationIntegrationConfigurationResponseModel, Error<CreateError>> {
89        let local_var_configuration = &self.configuration;
90
91        let local_var_client = &local_var_configuration.client;
92
93        let local_var_uri_str = format!(
94            "{}/organizations/{organizationId}/integrations/{integrationId}/configurations",
95            local_var_configuration.base_path,
96            organizationId = organization_id,
97            integrationId = integration_id
98        );
99        let mut local_var_req_builder =
100            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
101
102        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
103            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
104        };
105        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
106        local_var_req_builder =
107            local_var_req_builder.json(&organization_integration_configuration_request_model);
108
109        let local_var_req = local_var_req_builder.build()?;
110        let local_var_resp = local_var_client.execute(local_var_req).await?;
111
112        let local_var_status = local_var_resp.status();
113        let local_var_content_type = local_var_resp
114            .headers()
115            .get("content-type")
116            .and_then(|v| v.to_str().ok())
117            .unwrap_or("application/octet-stream");
118        let local_var_content_type = super::ContentType::from(local_var_content_type);
119        let local_var_content = local_var_resp.text().await?;
120
121        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
122            match local_var_content_type {
123                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
124                ContentType::Text => {
125                    return Err(Error::from(serde_json::Error::custom(
126                        "Received `text/plain` content type response that cannot be converted to `models::OrganizationIntegrationConfigurationResponseModel`",
127                    )));
128                }
129                ContentType::Unsupported(local_var_unknown_type) => {
130                    return Err(Error::from(serde_json::Error::custom(format!(
131                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::OrganizationIntegrationConfigurationResponseModel`"
132                    ))));
133                }
134            }
135        } else {
136            let local_var_entity: Option<CreateError> =
137                serde_json::from_str(&local_var_content).ok();
138            let local_var_error = ResponseContent {
139                status: local_var_status,
140                content: local_var_content,
141                entity: local_var_entity,
142            };
143            Err(Error::ResponseError(local_var_error))
144        }
145    }
146
147    async fn delete<'a>(
148        &self,
149        organization_id: uuid::Uuid,
150        integration_id: uuid::Uuid,
151        configuration_id: uuid::Uuid,
152    ) -> Result<(), Error<DeleteError>> {
153        let local_var_configuration = &self.configuration;
154
155        let local_var_client = &local_var_configuration.client;
156
157        let local_var_uri_str = format!(
158            "{}/organizations/{organizationId}/integrations/{integrationId}/configurations/{configurationId}",
159            local_var_configuration.base_path,
160            organizationId = organization_id,
161            integrationId = integration_id,
162            configurationId = configuration_id
163        );
164        let mut local_var_req_builder =
165            local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
166
167        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
168            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
169        };
170        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
171
172        let local_var_req = local_var_req_builder.build()?;
173        let local_var_resp = local_var_client.execute(local_var_req).await?;
174
175        let local_var_status = local_var_resp.status();
176        let local_var_content = local_var_resp.text().await?;
177
178        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
179            Ok(())
180        } else {
181            let local_var_entity: Option<DeleteError> =
182                serde_json::from_str(&local_var_content).ok();
183            let local_var_error = ResponseContent {
184                status: local_var_status,
185                content: local_var_content,
186                entity: local_var_entity,
187            };
188            Err(Error::ResponseError(local_var_error))
189        }
190    }
191
192    async fn get<'a>(
193        &self,
194        organization_id: uuid::Uuid,
195        integration_id: uuid::Uuid,
196    ) -> Result<Vec<models::OrganizationIntegrationConfigurationResponseModel>, Error<GetError>>
197    {
198        let local_var_configuration = &self.configuration;
199
200        let local_var_client = &local_var_configuration.client;
201
202        let local_var_uri_str = format!(
203            "{}/organizations/{organizationId}/integrations/{integrationId}/configurations",
204            local_var_configuration.base_path,
205            organizationId = organization_id,
206            integrationId = integration_id
207        );
208        let mut local_var_req_builder =
209            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
210
211        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
212            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
213        };
214        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
215
216        let local_var_req = local_var_req_builder.build()?;
217        let local_var_resp = local_var_client.execute(local_var_req).await?;
218
219        let local_var_status = local_var_resp.status();
220        let local_var_content_type = local_var_resp
221            .headers()
222            .get("content-type")
223            .and_then(|v| v.to_str().ok())
224            .unwrap_or("application/octet-stream");
225        let local_var_content_type = super::ContentType::from(local_var_content_type);
226        let local_var_content = local_var_resp.text().await?;
227
228        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
229            match local_var_content_type {
230                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
231                ContentType::Text => {
232                    return Err(Error::from(serde_json::Error::custom(
233                        "Received `text/plain` content type response that cannot be converted to `Vec&lt;models::OrganizationIntegrationConfigurationResponseModel&gt;`",
234                    )));
235                }
236                ContentType::Unsupported(local_var_unknown_type) => {
237                    return Err(Error::from(serde_json::Error::custom(format!(
238                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `Vec&lt;models::OrganizationIntegrationConfigurationResponseModel&gt;`"
239                    ))));
240                }
241            }
242        } else {
243            let local_var_entity: Option<GetError> = serde_json::from_str(&local_var_content).ok();
244            let local_var_error = ResponseContent {
245                status: local_var_status,
246                content: local_var_content,
247                entity: local_var_entity,
248            };
249            Err(Error::ResponseError(local_var_error))
250        }
251    }
252
253    async fn update<'a>(
254        &self,
255        organization_id: uuid::Uuid,
256        integration_id: uuid::Uuid,
257        configuration_id: uuid::Uuid,
258        organization_integration_configuration_request_model: Option<
259            models::OrganizationIntegrationConfigurationRequestModel,
260        >,
261    ) -> Result<models::OrganizationIntegrationConfigurationResponseModel, Error<UpdateError>> {
262        let local_var_configuration = &self.configuration;
263
264        let local_var_client = &local_var_configuration.client;
265
266        let local_var_uri_str = format!(
267            "{}/organizations/{organizationId}/integrations/{integrationId}/configurations/{configurationId}",
268            local_var_configuration.base_path,
269            organizationId = organization_id,
270            integrationId = integration_id,
271            configurationId = configuration_id
272        );
273        let mut local_var_req_builder =
274            local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
275
276        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
277            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
278        };
279        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
280        local_var_req_builder =
281            local_var_req_builder.json(&organization_integration_configuration_request_model);
282
283        let local_var_req = local_var_req_builder.build()?;
284        let local_var_resp = local_var_client.execute(local_var_req).await?;
285
286        let local_var_status = local_var_resp.status();
287        let local_var_content_type = local_var_resp
288            .headers()
289            .get("content-type")
290            .and_then(|v| v.to_str().ok())
291            .unwrap_or("application/octet-stream");
292        let local_var_content_type = super::ContentType::from(local_var_content_type);
293        let local_var_content = local_var_resp.text().await?;
294
295        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
296            match local_var_content_type {
297                ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
298                ContentType::Text => {
299                    return Err(Error::from(serde_json::Error::custom(
300                        "Received `text/plain` content type response that cannot be converted to `models::OrganizationIntegrationConfigurationResponseModel`",
301                    )));
302                }
303                ContentType::Unsupported(local_var_unknown_type) => {
304                    return Err(Error::from(serde_json::Error::custom(format!(
305                        "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::OrganizationIntegrationConfigurationResponseModel`"
306                    ))));
307                }
308            }
309        } else {
310            let local_var_entity: Option<UpdateError> =
311                serde_json::from_str(&local_var_content).ok();
312            let local_var_error = ResponseContent {
313                status: local_var_status,
314                content: local_var_content,
315                entity: local_var_entity,
316            };
317            Err(Error::ResponseError(local_var_error))
318        }
319    }
320}
321
322/// struct for typed errors of method [`OrganizationIntegrationConfigurationApi::create`]
323#[derive(Debug, Clone, Serialize, Deserialize)]
324#[serde(untagged)]
325pub enum CreateError {
326    UnknownValue(serde_json::Value),
327}
328/// struct for typed errors of method [`OrganizationIntegrationConfigurationApi::delete`]
329#[derive(Debug, Clone, Serialize, Deserialize)]
330#[serde(untagged)]
331pub enum DeleteError {
332    UnknownValue(serde_json::Value),
333}
334/// struct for typed errors of method [`OrganizationIntegrationConfigurationApi::get`]
335#[derive(Debug, Clone, Serialize, Deserialize)]
336#[serde(untagged)]
337pub enum GetError {
338    UnknownValue(serde_json::Value),
339}
340/// struct for typed errors of method [`OrganizationIntegrationConfigurationApi::update`]
341#[derive(Debug, Clone, Serialize, Deserialize)]
342#[serde(untagged)]
343pub enum UpdateError {
344    UnknownValue(serde_json::Value),
345}