diff options
3 files changed, 26 insertions, 25 deletions
diff --git a/mullvad-management-interface/src/types/conversions/account.rs b/mullvad-management-interface/src/types/conversions/account.rs index c98166ba80..fa5b7aeff5 100644 --- a/mullvad-management-interface/src/types/conversions/account.rs +++ b/mullvad-management-interface/src/types/conversions/account.rs @@ -1,5 +1,5 @@ use crate::types; -use chrono::TimeZone; +use chrono::DateTime; use mullvad_types::account::{AccountData, VoucherSubmission}; use super::FromProtobufTypeError; @@ -23,12 +23,12 @@ impl TryFrom<types::VoucherSubmission> for VoucherSubmission { let new_expiry = submission .new_expiry .ok_or(FromProtobufTypeError::InvalidArgument("missing expiry"))?; - let ndt = - chrono::NaiveDateTime::from_timestamp_opt(new_expiry.seconds, new_expiry.nanos as u32) - .unwrap(); + + let new_expiry = DateTime::from_timestamp(new_expiry.seconds, new_expiry.nanos as u32) + .ok_or(FromProtobufTypeError::InvalidArgument("invalid timestamp"))?; Ok(VoucherSubmission { - new_expiry: chrono::Utc.from_utc_datetime(&ndt), + new_expiry, time_added: submission.seconds_added, }) } @@ -53,12 +53,13 @@ impl TryFrom<types::AccountData> for AccountData { let expiry = data .expiry .ok_or(FromProtobufTypeError::InvalidArgument("missing expiry"))?; - let ndt = - chrono::NaiveDateTime::from_timestamp_opt(expiry.seconds, expiry.nanos as u32).unwrap(); + + let expiry = DateTime::from_timestamp(expiry.seconds, expiry.nanos as u32) + .ok_or(FromProtobufTypeError::InvalidArgument("invalid timestamp"))?; Ok(AccountData { id: data.id, - expiry: chrono::Utc.from_utc_datetime(&ndt), + expiry, }) } } diff --git a/mullvad-management-interface/src/types/conversions/device.rs b/mullvad-management-interface/src/types/conversions/device.rs index 08dc2e52fb..b43c47ee99 100644 --- a/mullvad-management-interface/src/types/conversions/device.rs +++ b/mullvad-management-interface/src/types/conversions/device.rs @@ -1,28 +1,27 @@ use crate::types::{conversions::bytes_to_pubkey, proto, FromProtobufTypeError}; -use chrono::TimeZone; +use chrono::DateTime; use prost_types::Timestamp; impl TryFrom<proto::Device> for mullvad_types::device::Device { type Error = FromProtobufTypeError; fn try_from(device: proto::Device) -> Result<Self, Self::Error> { + let created_seconds = device + .created + .ok_or(FromProtobufTypeError::InvalidArgument( + "missing 'created' field", + ))? + .seconds; + + let created = DateTime::from_timestamp(created_seconds, 0) + .ok_or(FromProtobufTypeError::InvalidArgument("invalid timestamp"))?; + Ok(mullvad_types::device::Device { id: device.id, name: device.name, pubkey: bytes_to_pubkey(&device.pubkey)?, hijack_dns: device.hijack_dns, - created: chrono::Utc.from_utc_datetime( - &chrono::NaiveDateTime::from_timestamp_opt( - device - .created - .ok_or(FromProtobufTypeError::InvalidArgument( - "missing 'created' field", - ))? - .seconds, - 0, - ) - .unwrap(), - ), + created, }) } } diff --git a/mullvad-management-interface/src/types/conversions/wireguard.rs b/mullvad-management-interface/src/types/conversions/wireguard.rs index 4a4341339c..1ef378ef5e 100644 --- a/mullvad-management-interface/src/types/conversions/wireguard.rs +++ b/mullvad-management-interface/src/types/conversions/wireguard.rs @@ -1,6 +1,6 @@ use super::FromProtobufTypeError; use crate::types::proto; -use chrono::TimeZone; +use chrono::DateTime; use prost_types::Timestamp; impl From<mullvad_types::wireguard::PublicKey> for proto::PublicKey { @@ -24,13 +24,14 @@ impl TryFrom<proto::PublicKey> for mullvad_types::wireguard::PublicKey { .ok_or(FromProtobufTypeError::InvalidArgument( "missing 'created' timestamp", ))?; - let ndt = chrono::NaiveDateTime::from_timestamp_opt(created.seconds, created.nanos as u32) - .unwrap(); + + let created = DateTime::from_timestamp(created.seconds, created.nanos as u32) + .ok_or(FromProtobufTypeError::InvalidArgument("invalid timestamp"))?; Ok(mullvad_types::wireguard::PublicKey { key: talpid_types::net::wireguard::PublicKey::try_from(public_key.key.as_slice()) .map_err(|_| FromProtobufTypeError::InvalidArgument("invalid wireguard key"))?, - created: chrono::Utc.from_utc_datetime(&ndt), + created, }) } } |
