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