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 SelfHostedAccountBillingApi: Send + Sync {
29 async fn upload_license<'a>(
31 &self,
32 email: &'a str,
33 security_stamp: &'a str,
34 api_key: &'a str,
35 license: std::path::PathBuf,
36 id: Option<uuid::Uuid>,
37 name: Option<&'a str>,
38 email_verified: Option<bool>,
39 master_password: Option<&'a str>,
40 master_password_hint: Option<&'a str>,
41 culture: Option<&'a str>,
42 two_factor_providers: Option<&'a str>,
43 two_factor_recovery_code: Option<&'a str>,
44 equivalent_domains: Option<&'a str>,
45 excluded_global_equivalent_domains: Option<&'a str>,
46 account_revision_date: Option<String>,
47 key: Option<&'a str>,
48 public_key: Option<&'a str>,
49 private_key: Option<&'a str>,
50 signed_public_key: Option<&'a str>,
51 security_version: Option<i32>,
52 security_state: Option<&'a str>,
53 premium: Option<bool>,
54 premium_expiration_date: Option<String>,
55 renewal_reminder_date: Option<String>,
56 storage: Option<i64>,
57 max_storage_gb: Option<i32>,
58 gateway: Option<models::GatewayType>,
59 gateway_customer_id: Option<&'a str>,
60 gateway_subscription_id: Option<&'a str>,
61 reference_data: Option<&'a str>,
62 license_key: Option<&'a str>,
63 kdf: Option<models::KdfType>,
64 kdf_iterations: Option<i32>,
65 kdf_memory: Option<i32>,
66 kdf_parallelism: Option<i32>,
67 creation_date: Option<String>,
68 revision_date: Option<String>,
69 force_password_reset: Option<bool>,
70 uses_key_connector: Option<bool>,
71 failed_login_count: Option<i32>,
72 last_failed_login_date: Option<String>,
73 avatar_color: Option<&'a str>,
74 last_password_change_date: Option<String>,
75 last_kdf_change_date: Option<String>,
76 last_key_rotation_date: Option<String>,
77 last_email_change_date: Option<String>,
78 verify_devices: Option<bool>,
79 ) -> Result<(), Error<UploadLicenseError>>;
80}
81
82pub struct SelfHostedAccountBillingApiClient {
83 configuration: Arc<configuration::Configuration>,
84}
85
86impl SelfHostedAccountBillingApiClient {
87 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
88 Self { configuration }
89 }
90}
91
92#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
93#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
94impl SelfHostedAccountBillingApi for SelfHostedAccountBillingApiClient {
95 async fn upload_license<'a>(
96 &self,
97 email: &'a str,
98 security_stamp: &'a str,
99 api_key: &'a str,
100 license: std::path::PathBuf,
101 id: Option<uuid::Uuid>,
102 name: Option<&'a str>,
103 email_verified: Option<bool>,
104 master_password: Option<&'a str>,
105 master_password_hint: Option<&'a str>,
106 culture: Option<&'a str>,
107 two_factor_providers: Option<&'a str>,
108 two_factor_recovery_code: Option<&'a str>,
109 equivalent_domains: Option<&'a str>,
110 excluded_global_equivalent_domains: Option<&'a str>,
111 account_revision_date: Option<String>,
112 key: Option<&'a str>,
113 public_key: Option<&'a str>,
114 private_key: Option<&'a str>,
115 signed_public_key: Option<&'a str>,
116 security_version: Option<i32>,
117 security_state: Option<&'a str>,
118 premium: Option<bool>,
119 premium_expiration_date: Option<String>,
120 renewal_reminder_date: Option<String>,
121 storage: Option<i64>,
122 max_storage_gb: Option<i32>,
123 gateway: Option<models::GatewayType>,
124 gateway_customer_id: Option<&'a str>,
125 gateway_subscription_id: Option<&'a str>,
126 reference_data: Option<&'a str>,
127 license_key: Option<&'a str>,
128 kdf: Option<models::KdfType>,
129 kdf_iterations: Option<i32>,
130 kdf_memory: Option<i32>,
131 kdf_parallelism: Option<i32>,
132 creation_date: Option<String>,
133 revision_date: Option<String>,
134 force_password_reset: Option<bool>,
135 uses_key_connector: Option<bool>,
136 failed_login_count: Option<i32>,
137 last_failed_login_date: Option<String>,
138 avatar_color: Option<&'a str>,
139 last_password_change_date: Option<String>,
140 last_kdf_change_date: Option<String>,
141 last_key_rotation_date: Option<String>,
142 last_email_change_date: Option<String>,
143 verify_devices: Option<bool>,
144 ) -> Result<(), Error<UploadLicenseError>> {
145 let local_var_configuration = &self.configuration;
146
147 let local_var_client = &local_var_configuration.client;
148
149 let local_var_uri_str = format!(
150 "{}/account/billing/vnext/self-host/license",
151 local_var_configuration.base_path
152 );
153 let mut local_var_req_builder =
154 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
155
156 if let Some(ref param_value) = id {
157 local_var_req_builder =
158 local_var_req_builder.query(&[("id", ¶m_value.to_string())]);
159 }
160 if let Some(ref param_value) = name {
161 local_var_req_builder =
162 local_var_req_builder.query(&[("name", ¶m_value.to_string())]);
163 }
164 local_var_req_builder = local_var_req_builder.query(&[("email", &email.to_string())]);
165 if let Some(ref param_value) = email_verified {
166 local_var_req_builder =
167 local_var_req_builder.query(&[("emailVerified", ¶m_value.to_string())]);
168 }
169 if let Some(ref param_value) = master_password {
170 local_var_req_builder =
171 local_var_req_builder.query(&[("masterPassword", ¶m_value.to_string())]);
172 }
173 if let Some(ref param_value) = master_password_hint {
174 local_var_req_builder =
175 local_var_req_builder.query(&[("masterPasswordHint", ¶m_value.to_string())]);
176 }
177 if let Some(ref param_value) = culture {
178 local_var_req_builder =
179 local_var_req_builder.query(&[("culture", ¶m_value.to_string())]);
180 }
181 local_var_req_builder =
182 local_var_req_builder.query(&[("securityStamp", &security_stamp.to_string())]);
183 if let Some(ref param_value) = two_factor_providers {
184 local_var_req_builder =
185 local_var_req_builder.query(&[("twoFactorProviders", ¶m_value.to_string())]);
186 }
187 if let Some(ref param_value) = two_factor_recovery_code {
188 local_var_req_builder =
189 local_var_req_builder.query(&[("twoFactorRecoveryCode", ¶m_value.to_string())]);
190 }
191 if let Some(ref param_value) = equivalent_domains {
192 local_var_req_builder =
193 local_var_req_builder.query(&[("equivalentDomains", ¶m_value.to_string())]);
194 }
195 if let Some(ref param_value) = excluded_global_equivalent_domains {
196 local_var_req_builder = local_var_req_builder
197 .query(&[("excludedGlobalEquivalentDomains", ¶m_value.to_string())]);
198 }
199 if let Some(ref param_value) = account_revision_date {
200 local_var_req_builder =
201 local_var_req_builder.query(&[("accountRevisionDate", ¶m_value.to_string())]);
202 }
203 if let Some(ref param_value) = key {
204 local_var_req_builder =
205 local_var_req_builder.query(&[("key", ¶m_value.to_string())]);
206 }
207 if let Some(ref param_value) = public_key {
208 local_var_req_builder =
209 local_var_req_builder.query(&[("publicKey", ¶m_value.to_string())]);
210 }
211 if let Some(ref param_value) = private_key {
212 local_var_req_builder =
213 local_var_req_builder.query(&[("privateKey", ¶m_value.to_string())]);
214 }
215 if let Some(ref param_value) = signed_public_key {
216 local_var_req_builder =
217 local_var_req_builder.query(&[("signedPublicKey", ¶m_value.to_string())]);
218 }
219 if let Some(ref param_value) = security_version {
220 local_var_req_builder =
221 local_var_req_builder.query(&[("securityVersion", ¶m_value.to_string())]);
222 }
223 if let Some(ref param_value) = security_state {
224 local_var_req_builder =
225 local_var_req_builder.query(&[("securityState", ¶m_value.to_string())]);
226 }
227 if let Some(ref param_value) = premium {
228 local_var_req_builder =
229 local_var_req_builder.query(&[("premium", ¶m_value.to_string())]);
230 }
231 if let Some(ref param_value) = premium_expiration_date {
232 local_var_req_builder =
233 local_var_req_builder.query(&[("premiumExpirationDate", ¶m_value.to_string())]);
234 }
235 if let Some(ref param_value) = renewal_reminder_date {
236 local_var_req_builder =
237 local_var_req_builder.query(&[("renewalReminderDate", ¶m_value.to_string())]);
238 }
239 if let Some(ref param_value) = storage {
240 local_var_req_builder =
241 local_var_req_builder.query(&[("storage", ¶m_value.to_string())]);
242 }
243 if let Some(ref param_value) = max_storage_gb {
244 local_var_req_builder =
245 local_var_req_builder.query(&[("maxStorageGb", ¶m_value.to_string())]);
246 }
247 if let Some(ref param_value) = gateway {
248 local_var_req_builder =
249 local_var_req_builder.query(&[("gateway", ¶m_value.to_string())]);
250 }
251 if let Some(ref param_value) = gateway_customer_id {
252 local_var_req_builder =
253 local_var_req_builder.query(&[("gatewayCustomerId", ¶m_value.to_string())]);
254 }
255 if let Some(ref param_value) = gateway_subscription_id {
256 local_var_req_builder =
257 local_var_req_builder.query(&[("gatewaySubscriptionId", ¶m_value.to_string())]);
258 }
259 if let Some(ref param_value) = reference_data {
260 local_var_req_builder =
261 local_var_req_builder.query(&[("referenceData", ¶m_value.to_string())]);
262 }
263 if let Some(ref param_value) = license_key {
264 local_var_req_builder =
265 local_var_req_builder.query(&[("licenseKey", ¶m_value.to_string())]);
266 }
267 local_var_req_builder = local_var_req_builder.query(&[("apiKey", &api_key.to_string())]);
268 if let Some(ref param_value) = kdf {
269 local_var_req_builder =
270 local_var_req_builder.query(&[("kdf", ¶m_value.to_string())]);
271 }
272 if let Some(ref param_value) = kdf_iterations {
273 local_var_req_builder =
274 local_var_req_builder.query(&[("kdfIterations", ¶m_value.to_string())]);
275 }
276 if let Some(ref param_value) = kdf_memory {
277 local_var_req_builder =
278 local_var_req_builder.query(&[("kdfMemory", ¶m_value.to_string())]);
279 }
280 if let Some(ref param_value) = kdf_parallelism {
281 local_var_req_builder =
282 local_var_req_builder.query(&[("kdfParallelism", ¶m_value.to_string())]);
283 }
284 if let Some(ref param_value) = creation_date {
285 local_var_req_builder =
286 local_var_req_builder.query(&[("creationDate", ¶m_value.to_string())]);
287 }
288 if let Some(ref param_value) = revision_date {
289 local_var_req_builder =
290 local_var_req_builder.query(&[("revisionDate", ¶m_value.to_string())]);
291 }
292 if let Some(ref param_value) = force_password_reset {
293 local_var_req_builder =
294 local_var_req_builder.query(&[("forcePasswordReset", ¶m_value.to_string())]);
295 }
296 if let Some(ref param_value) = uses_key_connector {
297 local_var_req_builder =
298 local_var_req_builder.query(&[("usesKeyConnector", ¶m_value.to_string())]);
299 }
300 if let Some(ref param_value) = failed_login_count {
301 local_var_req_builder =
302 local_var_req_builder.query(&[("failedLoginCount", ¶m_value.to_string())]);
303 }
304 if let Some(ref param_value) = last_failed_login_date {
305 local_var_req_builder =
306 local_var_req_builder.query(&[("lastFailedLoginDate", ¶m_value.to_string())]);
307 }
308 if let Some(ref param_value) = avatar_color {
309 local_var_req_builder =
310 local_var_req_builder.query(&[("avatarColor", ¶m_value.to_string())]);
311 }
312 if let Some(ref param_value) = last_password_change_date {
313 local_var_req_builder = local_var_req_builder
314 .query(&[("lastPasswordChangeDate", ¶m_value.to_string())]);
315 }
316 if let Some(ref param_value) = last_kdf_change_date {
317 local_var_req_builder =
318 local_var_req_builder.query(&[("lastKdfChangeDate", ¶m_value.to_string())]);
319 }
320 if let Some(ref param_value) = last_key_rotation_date {
321 local_var_req_builder =
322 local_var_req_builder.query(&[("lastKeyRotationDate", ¶m_value.to_string())]);
323 }
324 if let Some(ref param_value) = last_email_change_date {
325 local_var_req_builder =
326 local_var_req_builder.query(&[("lastEmailChangeDate", ¶m_value.to_string())]);
327 }
328 if let Some(ref param_value) = verify_devices {
329 local_var_req_builder =
330 local_var_req_builder.query(&[("verifyDevices", ¶m_value.to_string())]);
331 }
332 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
333 local_var_req_builder = local_var_req_builder
334 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
335 }
336 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
337 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
338 };
339 let mut local_var_form = reqwest::multipart::Form::new();
340 local_var_req_builder = local_var_req_builder.multipart(local_var_form);
342
343 let local_var_req = local_var_req_builder.build()?;
344 let local_var_resp = local_var_client.execute(local_var_req).await?;
345
346 let local_var_status = local_var_resp.status();
347 let local_var_content = local_var_resp.text().await?;
348
349 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
350 Ok(())
351 } else {
352 let local_var_entity: Option<UploadLicenseError> =
353 serde_json::from_str(&local_var_content).ok();
354 let local_var_error = ResponseContent {
355 status: local_var_status,
356 content: local_var_content,
357 entity: local_var_entity,
358 };
359 Err(Error::ResponseError(local_var_error))
360 }
361 }
362}
363
364#[derive(Debug, Clone, Serialize, Deserialize)]
366#[serde(untagged)]
367pub enum UploadLicenseError {
368 UnknownValue(serde_json::Value),
369}