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::{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        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
75            local_var_req_builder = local_var_req_builder
76                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
77        }
78
79        let local_var_req = local_var_req_builder.build()?;
80        let local_var_resp = local_var_client.execute(local_var_req).await?;
81
82        let local_var_status = local_var_resp.status();
83        let local_var_content = local_var_resp.text().await?;
84
85        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
86            Ok(())
87        } else {
88            let local_var_entity: Option<ExternalCallbackError> =
89                serde_json::from_str(&local_var_content).ok();
90            let local_var_error = ResponseContent {
91                status: local_var_status,
92                content: local_var_content,
93                entity: local_var_entity,
94            };
95            Err(Error::ResponseError(local_var_error))
96        }
97    }
98
99    async fn external_challenge<'a>(
100        &self,
101        domain_hint: Option<&'a str>,
102        return_url: Option<&'a str>,
103        user_identifier: Option<&'a str>,
104        sso_token: Option<&'a str>,
105    ) -> Result<(), Error<ExternalChallengeError>> {
106        let local_var_configuration = &self.configuration;
107
108        let local_var_client = &local_var_configuration.client;
109
110        let local_var_uri_str = format!(
111            "{}/sso/ExternalChallenge",
112            local_var_configuration.base_path
113        );
114        let mut local_var_req_builder =
115            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
116
117        if let Some(ref param_value) = domain_hint {
118            local_var_req_builder =
119                local_var_req_builder.query(&[("domainHint", &param_value.to_string())]);
120        }
121        if let Some(ref param_value) = return_url {
122            local_var_req_builder =
123                local_var_req_builder.query(&[("returnUrl", &param_value.to_string())]);
124        }
125        if let Some(ref param_value) = user_identifier {
126            local_var_req_builder =
127                local_var_req_builder.query(&[("userIdentifier", &param_value.to_string())]);
128        }
129        if let Some(ref param_value) = sso_token {
130            local_var_req_builder =
131                local_var_req_builder.query(&[("ssoToken", &param_value.to_string())]);
132        }
133        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
134            local_var_req_builder = local_var_req_builder
135                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
136        }
137
138        let local_var_req = local_var_req_builder.build()?;
139        let local_var_resp = local_var_client.execute(local_var_req).await?;
140
141        let local_var_status = local_var_resp.status();
142        let local_var_content = local_var_resp.text().await?;
143
144        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
145            Ok(())
146        } else {
147            let local_var_entity: Option<ExternalChallengeError> =
148                serde_json::from_str(&local_var_content).ok();
149            let local_var_error = ResponseContent {
150                status: local_var_status,
151                content: local_var_content,
152                entity: local_var_entity,
153            };
154            Err(Error::ResponseError(local_var_error))
155        }
156    }
157
158    async fn login<'a>(&self, return_url: Option<&'a str>) -> Result<(), Error<LoginError>> {
159        let local_var_configuration = &self.configuration;
160
161        let local_var_client = &local_var_configuration.client;
162
163        let local_var_uri_str = format!("{}/sso/Login", local_var_configuration.base_path);
164        let mut local_var_req_builder =
165            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
166
167        if let Some(ref param_value) = return_url {
168            local_var_req_builder =
169                local_var_req_builder.query(&[("returnUrl", &param_value.to_string())]);
170        }
171        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
172            local_var_req_builder = local_var_req_builder
173                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
174        }
175
176        let local_var_req = local_var_req_builder.build()?;
177        let local_var_resp = local_var_client.execute(local_var_req).await?;
178
179        let local_var_status = local_var_resp.status();
180        let local_var_content = local_var_resp.text().await?;
181
182        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
183            Ok(())
184        } else {
185            let local_var_entity: Option<LoginError> =
186                serde_json::from_str(&local_var_content).ok();
187            let local_var_error = ResponseContent {
188                status: local_var_status,
189                content: local_var_content,
190                entity: local_var_entity,
191            };
192            Err(Error::ResponseError(local_var_error))
193        }
194    }
195
196    async fn pre_validate<'a>(
197        &self,
198        domain_hint: Option<&'a str>,
199    ) -> Result<(), Error<PreValidateError>> {
200        let local_var_configuration = &self.configuration;
201
202        let local_var_client = &local_var_configuration.client;
203
204        let local_var_uri_str = format!("{}/sso/PreValidate", local_var_configuration.base_path);
205        let mut local_var_req_builder =
206            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
207
208        if let Some(ref param_value) = domain_hint {
209            local_var_req_builder =
210                local_var_req_builder.query(&[("domainHint", &param_value.to_string())]);
211        }
212        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
213            local_var_req_builder = local_var_req_builder
214                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
215        }
216
217        let local_var_req = local_var_req_builder.build()?;
218        let local_var_resp = local_var_client.execute(local_var_req).await?;
219
220        let local_var_status = local_var_resp.status();
221        let local_var_content = local_var_resp.text().await?;
222
223        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
224            Ok(())
225        } else {
226            let local_var_entity: Option<PreValidateError> =
227                serde_json::from_str(&local_var_content).ok();
228            let local_var_error = ResponseContent {
229                status: local_var_status,
230                content: local_var_content,
231                entity: local_var_entity,
232            };
233            Err(Error::ResponseError(local_var_error))
234        }
235    }
236}
237
238/// struct for typed errors of method [`SsoApi::external_callback`]
239#[derive(Debug, Clone, Serialize, Deserialize)]
240#[serde(untagged)]
241pub enum ExternalCallbackError {
242    UnknownValue(serde_json::Value),
243}
244/// struct for typed errors of method [`SsoApi::external_challenge`]
245#[derive(Debug, Clone, Serialize, Deserialize)]
246#[serde(untagged)]
247pub enum ExternalChallengeError {
248    UnknownValue(serde_json::Value),
249}
250/// struct for typed errors of method [`SsoApi::login`]
251#[derive(Debug, Clone, Serialize, Deserialize)]
252#[serde(untagged)]
253pub enum LoginError {
254    UnknownValue(serde_json::Value),
255}
256/// struct for typed errors of method [`SsoApi::pre_validate`]
257#[derive(Debug, Clone, Serialize, Deserialize)]
258#[serde(untagged)]
259pub enum PreValidateError {
260    UnknownValue(serde_json::Value),
261}