bitwarden_api_identity/apis/
sso_api.rs

1/*
2 * Bitwarden Identity
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: v1
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 SsoApi: Send + Sync {
29    /// GET /sso/ExternalCallback
30    async fn external_callback(&self) -> Result<(), Error<ExternalCallbackError>>;
31
32    /// GET /sso/ExternalChallenge
33    async fn external_challenge<'a>(
34        &self,
35        domain_hint: Option<&'a str>,
36        return_url: Option<&'a str>,
37        user_identifier: Option<&'a str>,
38        sso_token: Option<&'a str>,
39    ) -> Result<(), Error<ExternalChallengeError>>;
40
41    /// GET /sso/Login
42    async fn login<'a>(&self, return_url: Option<&'a str>) -> Result<(), Error<LoginError>>;
43
44    /// GET /sso/PreValidate
45    async fn pre_validate<'a>(
46        &self,
47        domain_hint: Option<&'a str>,
48    ) -> Result<(), Error<PreValidateError>>;
49}
50
51pub struct SsoApiClient {
52    configuration: Arc<configuration::Configuration>,
53}
54
55impl SsoApiClient {
56    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
57        Self { configuration }
58    }
59}
60
61#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
62#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
63impl SsoApi for SsoApiClient {
64    async fn external_callback(&self) -> Result<(), Error<ExternalCallbackError>> {
65        let local_var_configuration = &self.configuration;
66
67        let local_var_client = &local_var_configuration.client;
68
69        let local_var_uri_str =
70            format!("{}/sso/ExternalCallback", local_var_configuration.base_path);
71        let mut local_var_req_builder =
72            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
73
74        let local_var_req = local_var_req_builder.build()?;
75        let local_var_resp = local_var_client.execute(local_var_req).await?;
76
77        let local_var_status = local_var_resp.status();
78        let local_var_content = local_var_resp.text().await?;
79
80        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
81            Ok(())
82        } else {
83            let local_var_entity: Option<ExternalCallbackError> =
84                serde_json::from_str(&local_var_content).ok();
85            let local_var_error = ResponseContent {
86                status: local_var_status,
87                content: local_var_content,
88                entity: local_var_entity,
89            };
90            Err(Error::ResponseError(local_var_error))
91        }
92    }
93
94    async fn external_challenge<'a>(
95        &self,
96        domain_hint: Option<&'a str>,
97        return_url: Option<&'a str>,
98        user_identifier: Option<&'a str>,
99        sso_token: Option<&'a str>,
100    ) -> Result<(), Error<ExternalChallengeError>> {
101        let local_var_configuration = &self.configuration;
102
103        let local_var_client = &local_var_configuration.client;
104
105        let local_var_uri_str = format!(
106            "{}/sso/ExternalChallenge",
107            local_var_configuration.base_path
108        );
109        let mut local_var_req_builder =
110            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
111
112        if let Some(ref param_value) = domain_hint {
113            local_var_req_builder =
114                local_var_req_builder.query(&[("domainHint", &param_value.to_string())]);
115        }
116        if let Some(ref param_value) = return_url {
117            local_var_req_builder =
118                local_var_req_builder.query(&[("returnUrl", &param_value.to_string())]);
119        }
120        if let Some(ref param_value) = user_identifier {
121            local_var_req_builder =
122                local_var_req_builder.query(&[("userIdentifier", &param_value.to_string())]);
123        }
124        if let Some(ref param_value) = sso_token {
125            local_var_req_builder =
126                local_var_req_builder.query(&[("ssoToken", &param_value.to_string())]);
127        }
128
129        let local_var_req = local_var_req_builder.build()?;
130        let local_var_resp = local_var_client.execute(local_var_req).await?;
131
132        let local_var_status = local_var_resp.status();
133        let local_var_content = local_var_resp.text().await?;
134
135        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
136            Ok(())
137        } else {
138            let local_var_entity: Option<ExternalChallengeError> =
139                serde_json::from_str(&local_var_content).ok();
140            let local_var_error = ResponseContent {
141                status: local_var_status,
142                content: local_var_content,
143                entity: local_var_entity,
144            };
145            Err(Error::ResponseError(local_var_error))
146        }
147    }
148
149    async fn login<'a>(&self, return_url: Option<&'a str>) -> Result<(), Error<LoginError>> {
150        let local_var_configuration = &self.configuration;
151
152        let local_var_client = &local_var_configuration.client;
153
154        let local_var_uri_str = format!("{}/sso/Login", local_var_configuration.base_path);
155        let mut local_var_req_builder =
156            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
157
158        if let Some(ref param_value) = return_url {
159            local_var_req_builder =
160                local_var_req_builder.query(&[("returnUrl", &param_value.to_string())]);
161        }
162
163        let local_var_req = local_var_req_builder.build()?;
164        let local_var_resp = local_var_client.execute(local_var_req).await?;
165
166        let local_var_status = local_var_resp.status();
167        let local_var_content = local_var_resp.text().await?;
168
169        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
170            Ok(())
171        } else {
172            let local_var_entity: Option<LoginError> =
173                serde_json::from_str(&local_var_content).ok();
174            let local_var_error = ResponseContent {
175                status: local_var_status,
176                content: local_var_content,
177                entity: local_var_entity,
178            };
179            Err(Error::ResponseError(local_var_error))
180        }
181    }
182
183    async fn pre_validate<'a>(
184        &self,
185        domain_hint: Option<&'a str>,
186    ) -> Result<(), Error<PreValidateError>> {
187        let local_var_configuration = &self.configuration;
188
189        let local_var_client = &local_var_configuration.client;
190
191        let local_var_uri_str = format!("{}/sso/PreValidate", local_var_configuration.base_path);
192        let mut local_var_req_builder =
193            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
194
195        if let Some(ref param_value) = domain_hint {
196            local_var_req_builder =
197                local_var_req_builder.query(&[("domainHint", &param_value.to_string())]);
198        }
199
200        let local_var_req = local_var_req_builder.build()?;
201        let local_var_resp = local_var_client.execute(local_var_req).await?;
202
203        let local_var_status = local_var_resp.status();
204        let local_var_content = local_var_resp.text().await?;
205
206        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
207            Ok(())
208        } else {
209            let local_var_entity: Option<PreValidateError> =
210                serde_json::from_str(&local_var_content).ok();
211            let local_var_error = ResponseContent {
212                status: local_var_status,
213                content: local_var_content,
214                entity: local_var_entity,
215            };
216            Err(Error::ResponseError(local_var_error))
217        }
218    }
219}
220
221/// struct for typed errors of method [`SsoApi::external_callback`]
222#[derive(Debug, Clone, Serialize, Deserialize)]
223#[serde(untagged)]
224pub enum ExternalCallbackError {
225    UnknownValue(serde_json::Value),
226}
227/// struct for typed errors of method [`SsoApi::external_challenge`]
228#[derive(Debug, Clone, Serialize, Deserialize)]
229#[serde(untagged)]
230pub enum ExternalChallengeError {
231    UnknownValue(serde_json::Value),
232}
233/// struct for typed errors of method [`SsoApi::login`]
234#[derive(Debug, Clone, Serialize, Deserialize)]
235#[serde(untagged)]
236pub enum LoginError {
237    UnknownValue(serde_json::Value),
238}
239/// struct for typed errors of method [`SsoApi::pre_validate`]
240#[derive(Debug, Clone, Serialize, Deserialize)]
241#[serde(untagged)]
242pub enum PreValidateError {
243    UnknownValue(serde_json::Value),
244}