summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-06 22:16:07 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-11 13:15:51 +0000
commit007ceb2fc87f7d5fdece7f6f01fa524c9084a823 (patch)
tree0ba9129aff6343aa52c9c50274d249017917ba49
parent23f5dd32abb48af08bdf621076068e54d8a3e238 (diff)
downloadmullvadvpn-007ceb2fc87f7d5fdece7f6f01fa524c9084a823.tar.xz
mullvadvpn-007ceb2fc87f7d5fdece7f6f01fa524c9084a823.zip
Create `VoucherSubmissionResult` type
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/VoucherSubmissionResult.kt9
-rw-r--r--mullvad-jni/src/lib.rs29
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(