diff options
author | Teddy Wing | 2018-04-14 23:58:46 +0200 |
---|---|---|
committer | Teddy Wing | 2018-04-15 00:00:39 +0200 |
commit | a937e1a2d79a64d525eae4cebb8a39cba123f3ac (patch) | |
tree | 5cc4e40def66fc6eb8bbfe418605d81dc0ce11a2 /meetup | |
parent | e1dbf0ad02178f265f50ea9aa7e460cfcf88c406 (diff) | |
download | meetup-find-events-rss-a937e1a2d79a64d525eae4cebb8a39cba123f3ac.tar.bz2 |
meetup: Handle errors with 'error-chain'
Use this instead of `Box`es. Hoping this, along with using the library
in my main crate also, will help me get some more context on my runtime
error.
Hey, it did! Turns out the error is coming from 'serde_json'. Cool.
Diffstat (limited to 'meetup')
-rw-r--r-- | meetup/src/client.rs | 7 | ||||
-rw-r--r-- | meetup/src/errors.rs | 6 | ||||
-rw-r--r-- | meetup/src/lib.rs | 3 |
3 files changed, 12 insertions, 4 deletions
diff --git a/meetup/src/client.rs b/meetup/src/client.rs index 6f98a1f..5e8e636 100644 --- a/meetup/src/client.rs +++ b/meetup/src/client.rs @@ -1,8 +1,7 @@ use reqwest; use serde_json; -use std::error::Error; - +use errors::*; use event::Event; const MEETUP_BASE_URL: &'static str = "https://api.meetup.com"; @@ -23,7 +22,7 @@ impl Client { end_date_range: String, radius: Option<String>, page: Option<String>, - ) -> Result<Vec<Event>, Box<Error>> { + ) -> Result<Vec<Event>> { let mut params = vec![ ("key", self.token.clone()), ("lat", latitude), @@ -52,7 +51,7 @@ impl Client { } -fn parse_json(json: String) -> Result<Vec<Event>, serde_json::Error> { +fn parse_json(json: String) -> Result<Vec<Event>> { let parsed: serde_json::Value = serde_json::from_str(json.as_ref())?; let events: Vec<Event> = serde_json::from_value(parsed["events"].clone())?; diff --git a/meetup/src/errors.rs b/meetup/src/errors.rs new file mode 100644 index 0000000..b826cf9 --- /dev/null +++ b/meetup/src/errors.rs @@ -0,0 +1,6 @@ +error_chain! { + foreign_links { + Reqwest(::reqwest::Error); + SerdeJson(::serde_json::Error); + } +} diff --git a/meetup/src/lib.rs b/meetup/src/lib.rs index 10c0ed2..ba62ff2 100644 --- a/meetup/src/lib.rs +++ b/meetup/src/lib.rs @@ -1,3 +1,5 @@ +#[macro_use] +extern crate error_chain; extern crate reqwest; extern crate serde; @@ -6,4 +8,5 @@ extern crate serde_derive; extern crate serde_json; pub mod client; +pub mod errors; pub mod event; |