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