aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meetup/src/lib.rs5
-rw-r--r--src/build_rss.rs4
-rw-r--r--src/errors.rs6
-rw-r--r--src/lib.rs3
-rw-r--r--src/meetup_rss.rs7
5 files changed, 19 insertions, 6 deletions
diff --git a/meetup/src/lib.rs b/meetup/src/lib.rs
index ba62ff2..36cb13b 100644
--- a/meetup/src/lib.rs
+++ b/meetup/src/lib.rs
@@ -8,5 +8,8 @@ extern crate serde_derive;
extern crate serde_json;
pub mod client;
-pub mod errors;
pub mod event;
+
+mod errors;
+
+pub use errors::Error;
diff --git a/src/build_rss.rs b/src/build_rss.rs
index 93430a1..0c31a43 100644
--- a/src/build_rss.rs
+++ b/src/build_rss.rs
@@ -1,4 +1,4 @@
-use std::error::Error;
+use errors::*;
use meetup::client;
use meetup_rss;
@@ -12,7 +12,7 @@ pub fn write_feed(
end_date_range: String,
radius: Option<String>,
page: Option<String>,
-) -> Result<(), Box<Error>> {
+) -> Result<()> {
let client = client::Client::new(token);
let events = client.find_upcoming_events(
latitude,
diff --git a/src/errors.rs b/src/errors.rs
new file mode 100644
index 0000000..d9e431b
--- /dev/null
+++ b/src/errors.rs
@@ -0,0 +1,6 @@
+error_chain! {
+ foreign_links {
+ Meetup(::meetup::Error);
+ Rss(::rss::Error);
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
index cc20fe5..6cfbd86 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,7 +1,10 @@
+#[macro_use]
+extern crate error_chain;
extern crate rss;
extern crate meetup;
pub mod build_rss;
+mod errors;
mod meetup_rss;
diff --git a/src/meetup_rss.rs b/src/meetup_rss.rs
index 7dd2b9e..d1d3f5f 100644
--- a/src/meetup_rss.rs
+++ b/src/meetup_rss.rs
@@ -1,10 +1,11 @@
-use rss::{self, Channel, ChannelBuilder, Item};
+use rss::{Channel, ChannelBuilder, Item};
use std::io;
+use errors::*;
use meetup::event::Event;
-pub fn generate(events: &Vec<Event>) -> Result<Channel, String> {
+pub fn generate(events: &Vec<Event>) -> Result<Channel> {
let items: Vec<Item> = events.into_iter().map(|event| {
let mut item = Item::default();
item.set_title(event.name.clone());
@@ -24,7 +25,7 @@ pub fn generate(events: &Vec<Event>) -> Result<Channel, String> {
}
/// Writes the channel to standard output.
-pub fn write(channel: Channel) -> Result<(), rss::Error> {
+pub fn write(channel: Channel) -> Result<()> {
let stdout = io::stdout();
let handle = stdout.lock();