aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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) {