From ef1f45b67921285493511c75f08ba00a56292b15 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Mon, 22 Oct 2018 23:05:51 +0200 Subject: Fill in `get_trial_start()` function Reads the encrypted timestamp from the trial file and returns a `DateTime`. --- src/errors.rs | 2 ++ src/trial.rs | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'src') 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> { + 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) { -- cgit v1.2.3