summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-05 17:02:23 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-05 17:03:46 +0000
commitcacd0e547244fa5ca946416673d0db3416837c59 (patch)
tree238a330b16fc36fa8241c81d6b9a957d535b4f4b
parentf2b729b786128897cc0fd3033e0cde54487f6655 (diff)
downloadmullvadvpn-cacd0e547244fa5ca946416673d0db3416837c59.tar.xz
mullvadvpn-cacd0e547244fa5ca946416673d0db3416837c59.zip
Handle `null` value for `latest_stable` version
-rw-r--r--mullvad-rpc/src/lib.rs32
1 files changed, 26 insertions, 6 deletions
diff --git a/mullvad-rpc/src/lib.rs b/mullvad-rpc/src/lib.rs
index 949f8c76f8..de29ccd8e5 100644
--- a/mullvad-rpc/src/lib.rs
+++ b/mullvad-rpc/src/lib.rs
@@ -5,7 +5,7 @@ use futures01::future::Future as Future01;
use hyper::Method;
use mullvad_types::{
account::{AccountToken, VoucherSubmission},
- version,
+ version::{AppVersion, AppVersionInfo},
};
use std::{
collections::BTreeMap,
@@ -278,6 +278,14 @@ pub struct AppVersionProxy {
handle: rest::MullvadRestHandle,
}
+#[derive(serde::Deserialize)]
+struct AppVersionResponse {
+ supported: bool,
+ latest: AppVersion,
+ latest_stable: Option<AppVersion>,
+ latest_beta: AppVersion,
+}
+
impl AppVersionProxy {
pub fn new(handle: rest::MullvadRestHandle) -> Self {
Self { handle }
@@ -285,9 +293,9 @@ impl AppVersionProxy {
pub fn version_check(
&self,
- version: version::AppVersion,
+ version: AppVersion,
platform: &str,
- ) -> impl Future01<Item = mullvad_types::version::AppVersionInfo, Error = rest::Error> {
+ ) -> impl Future01<Item = AppVersionInfo, Error = rest::Error> {
let service = self.handle.service.clone();
let request = rest::send_request(
@@ -298,9 +306,21 @@ impl AppVersionProxy {
None,
StatusCode::OK,
);
- self.handle
- .service
- .compat_spawn(async move { rest::deserialize_body(request.await?).await })
+
+ let future = async move {
+ let response: AppVersionResponse = rest::deserialize_body(request.await?).await?;
+
+ let version_info = AppVersionInfo {
+ supported: response.supported,
+ latest: response.latest,
+ latest_stable: response.latest_stable.unwrap_or_else(|| "".to_owned()),
+ latest_beta: response.latest_beta,
+ };
+
+ Ok(version_info)
+ };
+
+ self.handle.service.compat_spawn(future)
}
}