1use 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 SelfHostedOrganizationSponsorshipsApi: Send + Sync {
29 async fn admin_initiated_revoke_sponsorship<'a>(
32 &self,
33 sponsoring_org_id: uuid::Uuid,
34 sponsored_friendly_name: &'a str,
35 ) -> Result<(), Error<AdminInitiatedRevokeSponsorshipError>>;
36
37 async fn create_sponsorship<'a>(
39 &self,
40 sponsoring_org_id: uuid::Uuid,
41 organization_sponsorship_create_request_model: Option<
42 models::OrganizationSponsorshipCreateRequestModel,
43 >,
44 ) -> Result<(), Error<CreateSponsorshipError>>;
45
46 async fn get_sponsored_organizations<'a>(
48 &self,
49 org_id: uuid::Uuid,
50 ) -> Result<
51 models::OrganizationSponsorshipInvitesResponseModelListResponseModel,
52 Error<GetSponsoredOrganizationsError>,
53 >;
54
55 async fn revoke_sponsorship<'a>(
57 &self,
58 sponsoring_org_id: uuid::Uuid,
59 ) -> Result<(), Error<RevokeSponsorshipError>>;
60}
61
62pub struct SelfHostedOrganizationSponsorshipsApiClient {
63 configuration: Arc<configuration::Configuration>,
64}
65
66impl SelfHostedOrganizationSponsorshipsApiClient {
67 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
68 Self { configuration }
69 }
70}
71
72#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
73#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
74impl SelfHostedOrganizationSponsorshipsApi for SelfHostedOrganizationSponsorshipsApiClient {
75 async fn admin_initiated_revoke_sponsorship<'a>(
76 &self,
77 sponsoring_org_id: uuid::Uuid,
78 sponsored_friendly_name: &'a str,
79 ) -> Result<(), Error<AdminInitiatedRevokeSponsorshipError>> {
80 let local_var_configuration = &self.configuration;
81
82 let local_var_client = &local_var_configuration.client;
83
84 let local_var_uri_str = format!(
85 "{}/organization/sponsorship/self-hosted/{sponsoringOrgId}/{sponsoredFriendlyName}/revoke",
86 local_var_configuration.base_path,
87 sponsoringOrgId = sponsoring_org_id,
88 sponsoredFriendlyName = crate::apis::urlencode(sponsored_friendly_name)
89 );
90 let mut local_var_req_builder =
91 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
92
93 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
94 local_var_req_builder = local_var_req_builder
95 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
96 }
97 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
98 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
99 };
100
101 let local_var_req = local_var_req_builder.build()?;
102 let local_var_resp = local_var_client.execute(local_var_req).await?;
103
104 let local_var_status = local_var_resp.status();
105 let local_var_content = local_var_resp.text().await?;
106
107 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
108 Ok(())
109 } else {
110 let local_var_entity: Option<AdminInitiatedRevokeSponsorshipError> =
111 serde_json::from_str(&local_var_content).ok();
112 let local_var_error = ResponseContent {
113 status: local_var_status,
114 content: local_var_content,
115 entity: local_var_entity,
116 };
117 Err(Error::ResponseError(local_var_error))
118 }
119 }
120
121 async fn create_sponsorship<'a>(
122 &self,
123 sponsoring_org_id: uuid::Uuid,
124 organization_sponsorship_create_request_model: Option<
125 models::OrganizationSponsorshipCreateRequestModel,
126 >,
127 ) -> Result<(), Error<CreateSponsorshipError>> {
128 let local_var_configuration = &self.configuration;
129
130 let local_var_client = &local_var_configuration.client;
131
132 let local_var_uri_str = format!(
133 "{}/organization/sponsorship/self-hosted/{sponsoringOrgId}/families-for-enterprise",
134 local_var_configuration.base_path,
135 sponsoringOrgId = sponsoring_org_id
136 );
137 let mut local_var_req_builder =
138 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
139
140 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
141 local_var_req_builder = local_var_req_builder
142 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
143 }
144 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
145 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
146 };
147 local_var_req_builder =
148 local_var_req_builder.json(&organization_sponsorship_create_request_model);
149
150 let local_var_req = local_var_req_builder.build()?;
151 let local_var_resp = local_var_client.execute(local_var_req).await?;
152
153 let local_var_status = local_var_resp.status();
154 let local_var_content = local_var_resp.text().await?;
155
156 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
157 Ok(())
158 } else {
159 let local_var_entity: Option<CreateSponsorshipError> =
160 serde_json::from_str(&local_var_content).ok();
161 let local_var_error = ResponseContent {
162 status: local_var_status,
163 content: local_var_content,
164 entity: local_var_entity,
165 };
166 Err(Error::ResponseError(local_var_error))
167 }
168 }
169
170 async fn get_sponsored_organizations<'a>(
171 &self,
172 org_id: uuid::Uuid,
173 ) -> Result<
174 models::OrganizationSponsorshipInvitesResponseModelListResponseModel,
175 Error<GetSponsoredOrganizationsError>,
176 > {
177 let local_var_configuration = &self.configuration;
178
179 let local_var_client = &local_var_configuration.client;
180
181 let local_var_uri_str = format!(
182 "{}/organization/sponsorship/self-hosted/{orgId}/sponsored",
183 local_var_configuration.base_path,
184 orgId = org_id
185 );
186 let mut local_var_req_builder =
187 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
188
189 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
190 local_var_req_builder = local_var_req_builder
191 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
192 }
193 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
194 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
195 };
196
197 let local_var_req = local_var_req_builder.build()?;
198 let local_var_resp = local_var_client.execute(local_var_req).await?;
199
200 let local_var_status = local_var_resp.status();
201 let local_var_content_type = local_var_resp
202 .headers()
203 .get("content-type")
204 .and_then(|v| v.to_str().ok())
205 .unwrap_or("application/octet-stream");
206 let local_var_content_type = super::ContentType::from(local_var_content_type);
207 let local_var_content = local_var_resp.text().await?;
208
209 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
210 match local_var_content_type {
211 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
212 ContentType::Text => {
213 return Err(Error::from(serde_json::Error::custom(
214 "Received `text/plain` content type response that cannot be converted to `models::OrganizationSponsorshipInvitesResponseModelListResponseModel`",
215 )));
216 }
217 ContentType::Unsupported(local_var_unknown_type) => {
218 return Err(Error::from(serde_json::Error::custom(format!(
219 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::OrganizationSponsorshipInvitesResponseModelListResponseModel`"
220 ))));
221 }
222 }
223 } else {
224 let local_var_entity: Option<GetSponsoredOrganizationsError> =
225 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 revoke_sponsorship<'a>(
236 &self,
237 sponsoring_org_id: uuid::Uuid,
238 ) -> Result<(), Error<RevokeSponsorshipError>> {
239 let local_var_configuration = &self.configuration;
240
241 let local_var_client = &local_var_configuration.client;
242
243 let local_var_uri_str = format!(
244 "{}/organization/sponsorship/self-hosted/{sponsoringOrgId}",
245 local_var_configuration.base_path,
246 sponsoringOrgId = sponsoring_org_id
247 );
248 let mut local_var_req_builder =
249 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
250
251 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
252 local_var_req_builder = local_var_req_builder
253 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
254 }
255 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
256 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
257 };
258
259 let local_var_req = local_var_req_builder.build()?;
260 let local_var_resp = local_var_client.execute(local_var_req).await?;
261
262 let local_var_status = local_var_resp.status();
263 let local_var_content = local_var_resp.text().await?;
264
265 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
266 Ok(())
267 } else {
268 let local_var_entity: Option<RevokeSponsorshipError> =
269 serde_json::from_str(&local_var_content).ok();
270 let local_var_error = ResponseContent {
271 status: local_var_status,
272 content: local_var_content,
273 entity: local_var_entity,
274 };
275 Err(Error::ResponseError(local_var_error))
276 }
277 }
278}
279
280#[derive(Debug, Clone, Serialize, Deserialize)]
283#[serde(untagged)]
284pub enum AdminInitiatedRevokeSponsorshipError {
285 UnknownValue(serde_json::Value),
286}
287#[derive(Debug, Clone, Serialize, Deserialize)]
289#[serde(untagged)]
290pub enum CreateSponsorshipError {
291 UnknownValue(serde_json::Value),
292}
293#[derive(Debug, Clone, Serialize, Deserialize)]
296#[serde(untagged)]
297pub enum GetSponsoredOrganizationsError {
298 UnknownValue(serde_json::Value),
299}
300#[derive(Debug, Clone, Serialize, Deserialize)]
302#[serde(untagged)]
303pub enum RevokeSponsorshipError {
304 UnknownValue(serde_json::Value),
305}