diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 12:40:15 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 16:41:56 +0000 |
| commit | 453c6ef689cc704273741b1768b4e5a0da5f4ad2 (patch) | |
| tree | 6a695ea6ca196e2e3a1a47df8a4a413076ab7936 | |
| parent | c4b73973b33d499ee6ebb4b2334142cd1e22f6ae (diff) | |
| download | mullvadvpn-453c6ef689cc704273741b1768b4e5a0da5f4ad2.tar.xz mullvadvpn-453c6ef689cc704273741b1768b4e5a0da5f4ad2.zip | |
Implement `MullvadDaemon::getAccountData`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt | 4 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 27 |
2 files changed, 29 insertions, 2 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt index d5ab845f89..c7025ea644 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt @@ -1,10 +1,14 @@ package net.mullvad.mullvadvpn +import net.mullvad.mullvadvpn.model.AccountData + class MullvadDaemon { init { System.loadLibrary("mullvad_jni") initialize() } + external fun getAccountData(accountToken: String): AccountData? + private external fun initialize() } diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index 5d3800fe3a..35d3825dcf 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -4,9 +4,9 @@ mod daemon_interface; mod from_java; mod into_java; -use crate::daemon_interface::DaemonInterface; +use crate::{daemon_interface::DaemonInterface, from_java::FromJava, into_java::IntoJava}; use jni::{ - objects::{GlobalRef, JObject}, + objects::{GlobalRef, JObject, JString}, JNIEnv, }; use lazy_static::lazy_static; @@ -139,3 +139,26 @@ fn get_class(name: &str) -> GlobalRef { None => panic!("Class not loaded: {}", name), } } + +#[no_mangle] +#[allow(non_snake_case)] +pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_getAccountData<'env, 'this>( + env: JNIEnv<'env>, + _: JObject<'this>, + accountToken: JString, +) -> JObject<'env> { + let daemon = DAEMON_INTERFACE.lock(); + + let account = String::from_java(&env, accountToken); + + match daemon.get_account_data(account) { + Ok(data) => data.into_java(&env), + Err(error) => { + log::error!( + "{}", + error.display_chain_with_msg("Failed to get account data") + ); + JObject::null() + } + } +} |
