aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2018-10-22 23:05:51 +0200
committerTeddy Wing2018-10-22 23:05:51 +0200
commitef1f45b67921285493511c75f08ba00a56292b15 (patch)
tree41723f143c175b9928e41ef136c0b297e35c3b72
parenta13883f3a0bb23f069c8172f7c5c7b686467c9d5 (diff)
downloaddome-key-map-ef1f45b67921285493511c75f08ba00a56292b15.tar.bz2
Fill in `get_trial_start()` function
Reads the encrypted timestamp from the trial file and returns a `DateTime`.
-rw-r--r--src/errors.rs2
-rw-r--r--src/trial.rs17
2 files changed, 16 insertions, 3 deletions
diff --git a/src/errors.rs b/src/errors.rs
index 17508fe..f84bb2e 100644
--- a/src/errors.rs
+++ b/src/errors.rs
@@ -6,6 +6,8 @@ error_chain! {
foreign_links {
Xdg(xdg::BaseDirectoriesError);
Io(::std::io::Error);
+
+ DateCrypt(DateCryptError);
}
}
diff --git a/src/trial.rs b/src/trial.rs
index 3fd9fc8..d8f3c2e 100644
--- a/src/trial.rs
+++ b/src/trial.rs
@@ -1,5 +1,5 @@
-use std::fs::OpenOptions;
-use std::io::{self, Write};
+use std::fs::{File, OpenOptions};
+use std::io::{self, Read, Write};
use std::result;
use chrono::{DateTime, FixedOffset, Local, TimeZone};
@@ -43,7 +43,18 @@ fn initialize_trial_start() -> Result<()> {
Ok(())
}
-fn get_trial_start() {
+fn get_trial_start() -> Result<DateTime<FixedOffset>> {
+ let xdg_dirs = xdg::BaseDirectories::with_prefix("dome-key")
+ .chain_err(|| "failed to get XDG base directories")?;
+ let trial_path = xdg_dirs.place_data_file(".trial")
+ .chain_err(|| "failed to get trial file path")?;
+ let mut trial_file = File::open(trial_path)?;
+ let mut encoded_time = String::new();
+ trial_file.read_to_string(&mut encoded_time)?;
+
+ let trial_start = decode_datetime(&encoded_time)?;
+
+ Ok(trial_start)
}
fn print_trial_days(days: u8) {