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