diff options
| author | Teddy Wing | 2018-10-22 23:05:51 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2018-10-22 23:05:51 +0200 | 
| commit | ef1f45b67921285493511c75f08ba00a56292b15 (patch) | |
| tree | 41723f143c175b9928e41ef136c0b297e35c3b72 /src | |
| parent | a13883f3a0bb23f069c8172f7c5c7b686467c9d5 (diff) | |
| download | dome-key-map-ef1f45b67921285493511c75f08ba00a56292b15.tar.bz2 | |
Fill in `get_trial_start()` function
Reads the encrypted timestamp from the trial file and returns a
`DateTime`.
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) { | 
