diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/errors.rs | 2 | ||||
| -rw-r--r-- | src/trial.rs | 17 |
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) { |
