From 008f57bec410d6924ca25c73f33cdfd0d41bf46c Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Mon, 5 Feb 2018 18:51:21 +0200 Subject: [PATCH] Create a ParseEpisodeError and replace bail! invocations. --- hammond-data/src/errors.rs | 2 ++ hammond-data/src/feed.rs | 6 +++--- hammond-data/src/models/new_episode.rs | 18 ++++++++++++------ hammond-data/src/utils.rs | 6 +++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/hammond-data/src/errors.rs b/hammond-data/src/errors.rs index 59dec70..689ee91 100644 --- a/hammond-data/src/errors.rs +++ b/hammond-data/src/errors.rs @@ -44,6 +44,8 @@ pub enum DataError { status_code: hyper::StatusCode, context: String, }, + #[fail(display = "Error occured while Parsing an Episode. Reason: {}", reason)] + ParseEpisodeError { reason: String, parent_id: i32 }, } impl From for DataError { diff --git a/hammond-data/src/feed.rs b/hammond-data/src/feed.rs index f6a3c6e..c5797b3 100644 --- a/hammond-data/src/feed.rs +++ b/hammond-data/src/feed.rs @@ -52,11 +52,11 @@ impl Feed { info!("Indexing {} episodes.", insert.len()); if let Err(err) = dbqueries::index_new_episodes(insert.as_slice()) { error!("Failed batch indexng, Fallign back to individual indexing."); - error!("Error: {}", err); + error!("{}", err); insert.iter().for_each(|ep| { if let Err(err) = ep.index() { error!("Failed to index episode: {:?}.", ep.title()); - error!("Error msg: {}", err); + error!("{}", err); }; }) } @@ -73,7 +73,7 @@ impl Feed { .for_each(|(ref ep, rowid)| { if let Err(err) = ep.update(rowid) { error!("Failed to index episode: {:?}.", ep.title()); - error!("Error msg: {}", err); + error!("{}", err); }; }) } diff --git a/hammond-data/src/models/new_episode.rs b/hammond-data/src/models/new_episode.rs index e943688..7cc56c7 100644 --- a/hammond-data/src/models/new_episode.rs +++ b/hammond-data/src/models/new_episode.rs @@ -184,9 +184,12 @@ impl PartialEq for NewEpisodeMinimal { impl NewEpisodeMinimal { pub(crate) fn new(item: &rss::Item, parent_id: i32) -> Result { if item.title().is_none() { - return Err(DataError::DiscountBail(format!( - "No title specified for the item." - ))); + let err = DataError::ParseEpisodeError { + reason: format!("No title specified for this Episode."), + parent_id, + }; + + return Err(err); } let title = item.title().unwrap().trim().to_owned(); @@ -197,9 +200,12 @@ impl NewEpisodeMinimal { } else if item.link().is_some() { item.link().map(|s| url_cleaner(s)) } else { - return Err(DataError::DiscountBail(format!( - "No url specified for the item." - ))); + let err = DataError::ParseEpisodeError { + reason: format!("No url specified for the item."), + parent_id, + }; + + return Err(err); }; // Default to rfc2822 represantation of epoch 0. diff --git a/hammond-data/src/utils.rs b/hammond-data/src/utils.rs index 11ec3bf..5681686 100644 --- a/hammond-data/src/utils.rs +++ b/hammond-data/src/utils.rs @@ -25,7 +25,7 @@ fn download_checker() -> Result<(), DataError> { ep.set_local_uri(None); if let Err(err) = ep.save() { error!("Error while trying to update episode: {:#?}", ep); - error!("Error: {}", err); + error!("{}", err); }; }); @@ -47,7 +47,7 @@ fn played_cleaner() -> Result<(), DataError> { if now_utc > limit { if let Err(err) = delete_local_content(ep) { error!("Error while trying to delete file: {:?}", ep.local_uri()); - error!("Error: {}", err); + error!("{}", err); } else { info!("Episode {:?} was deleted succesfully.", ep.local_uri()); }; @@ -67,7 +67,7 @@ fn delete_local_content(ep: &mut EpisodeCleanerQuery) -> Result<(), DataError> { ep.save()?; } else { error!("Error while trying to delete file: {}", uri); - error!("Error: {}", res.unwrap_err()); + error!("{}", res.unwrap_err()); }; } } else {