diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-06 22:16:07 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-11 13:15:51 +0000 |
| commit | 007ceb2fc87f7d5fdece7f6f01fa524c9084a823 (patch) | |
| tree | 0ba9129aff6343aa52c9c50274d249017917ba49 | |
| parent | 23f5dd32abb48af08bdf621076068e54d8a3e238 (diff) | |
| download | mullvadvpn-007ceb2fc87f7d5fdece7f6f01fa524c9084a823.tar.xz mullvadvpn-007ceb2fc87f7d5fdece7f6f01fa524c9084a823.zip | |
Create `VoucherSubmissionResult` type
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt | 9 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 29 |
2 files changed, 37 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt new file mode 100644 index 0000000000..33c57a595a --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt @@ -0,0 +1,9 @@ +package net.mullvad.mullvadvpn.model + +sealed class VoucherSubmissionResult { + class Ok(val submission: VoucherSubmission) : VoucherSubmissionResult() + class InvalidVoucher : VoucherSubmissionResult() + class VoucherAlreadyUsed : VoucherSubmissionResult() + class RpcError : VoucherSubmissionResult() + class OtherError : VoucherSubmissionResult() +} diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index bedd1fa118..37cf2a16cf 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -18,7 +18,7 @@ use jnix::{ }; use mullvad_daemon::{exception_logging, logging, version, Daemon, DaemonCommandChannel}; use mullvad_rpc::{rest::Error as RestError, StatusCode}; -use mullvad_types::account::AccountData; +use mullvad_types::account::{AccountData, VoucherSubmission}; use std::{ path::{Path, PathBuf}, ptr, @@ -75,6 +75,33 @@ impl From<Result<AccountData, daemon_interface::Error>> for GetAccountDataResult } } +#[derive(IntoJava)] +#[jnix(package = "net.mullvad.mullvadvpn.model")] +pub enum VoucherSubmissionResult { + Ok(VoucherSubmission), + InvalidVoucher, + VoucherAlreadyUsed, + RpcError, + OtherError, +} + +impl From<Result<VoucherSubmission, daemon_interface::Error>> for VoucherSubmissionResult { + fn from(result: Result<VoucherSubmission, daemon_interface::Error>) -> Self { + match result { + Ok(submission) => VoucherSubmissionResult::Ok(submission), + Err(daemon_interface::Error::RpcError(RestError::ApiError(_, code))) => { + match code.as_str() { + "INVALID_VOUCHER" => VoucherSubmissionResult::InvalidVoucher, + "VOUCHER_USED" => VoucherSubmissionResult::VoucherAlreadyUsed, + _ => VoucherSubmissionResult::RpcError, + } + } + Err(daemon_interface::Error::RpcError(_)) => VoucherSubmissionResult::RpcError, + _ => VoucherSubmissionResult::OtherError, + } + } +} + #[no_mangle] #[allow(non_snake_case)] pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_initialize( |
