From 4ed70a8011c53b81d01c6aec8b87bb1cd5997b09 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Tue, 3 Apr 2018 11:57:38 +0300 Subject: [PATCH] Rss::Error is now Send! --- hammond-data/src/errors.rs | 16 ++++++++-------- hammond-data/src/models/source.rs | 5 ++--- hammond-data/src/utils.rs | 1 - 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/hammond-data/src/errors.rs b/hammond-data/src/errors.rs index ccddd85..300c561 100644 --- a/hammond-data/src/errors.rs +++ b/hammond-data/src/errors.rs @@ -3,17 +3,12 @@ use diesel::r2d2; use diesel_migrations::RunMigrationsError; use hyper; use native_tls; -// use rss; +use rss; use url; use std::io; // use std::fmt; -// fadsadfs NOT SYNC -// #[derive(Fail, Debug)] -// #[fail(display = "RSS Error: {}", _0)] -// struct RSSError(rss::Error); - #[derive(Fail, Debug)] pub enum DataError { #[fail(display = "SQL Query failed: {}", _0)] @@ -34,8 +29,7 @@ pub enum DataError { #[fail(display = "IO Error: {}", _0)] IOError(#[cause] io::Error), #[fail(display = "RSS Error: {}", _0)] - // Rss::Error is not yet Sync - RssCrateError(String), + RssError(#[cause] rss::Error), #[fail(display = "Error: {}", _0)] Bail(String), #[fail(display = "Request to {} returned {}. Context: {}", url, status_code, context)] @@ -100,6 +94,12 @@ impl From for DataError { } } +impl From for DataError { + fn from(err: rss::Error) -> Self { + DataError::RssError(err) + } +} + impl From for DataError { fn from(err: String) -> Self { DataError::Bail(err) diff --git a/hammond-data/src/models/source.rs b/hammond-data/src/models/source.rs index 74c155f..1921e28 100644 --- a/hammond-data/src/models/source.rs +++ b/hammond-data/src/models/source.rs @@ -293,9 +293,8 @@ fn response_to_channel( .map_err(From::from) .map(|iter| iter.collect::>()) .map(|utf_8_bytes| String::from_utf8_lossy(&utf_8_bytes).into_owned()) - .and_then(|buf| { - Channel::from_str(&buf).or_else(|err| Err(DataError::RssCrateError(format!("{}", err)))) - }); + .and_then(|buf| Channel::from_str(&buf).map_err(From::from)); + let cpu_chan = pool.spawn(chan); Box::new(cpu_chan) } diff --git a/hammond-data/src/utils.rs b/hammond-data/src/utils.rs index 80cc5ae..4cc3bd4 100644 --- a/hammond-data/src/utils.rs +++ b/hammond-data/src/utils.rs @@ -3,7 +3,6 @@ use chrono::prelude::*; use rayon::prelude::*; -use itertools::Itertools; use url::{Position, Url}; use dbqueries;