aboutsummaryrefslogtreecommitdiffstats
path: root/meetup/src/event.rs
diff options
context:
space:
mode:
authorTeddy Wing2018-04-13 02:30:00 +0200
committerTeddy Wing2018-04-13 02:30:00 +0200
commitc95e34243c9805163f08ad76d2c5f744009f5ead (patch)
treeeb38845a2d121179aa3d86cb4c20090535fa1225 /meetup/src/event.rs
parent931517dbb1e881bb03f94daddff762f16c94a807 (diff)
downloadmeetup-find-events-rss-c95e34243c9805163f08ad76d2c5f744009f5ead.tar.bz2
meetup(parse_json): Return a Vec of Events
* Derive `Deserialize` on our `Event` type * Use Serde to parse a `Vec` of `Event`s that we can return from the function * Return a `Result` from the function to handle Serde errors
Diffstat (limited to 'meetup/src/event.rs')
-rw-r--r--meetup/src/event.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/meetup/src/event.rs b/meetup/src/event.rs
index 5ca5b54..06031b7 100644
--- a/meetup/src/event.rs
+++ b/meetup/src/event.rs
@@ -1,4 +1,7 @@
-#[derive(Debug, PartialEq)]
+use serde_json;
+
+
+#[derive(Debug, Deserialize, PartialEq)]
pub struct Event {
pub name: String,
pub description: String,
@@ -13,8 +16,11 @@ pub struct Event {
// }
-fn parse_json(json: String) -> Vec<Event> {
- Vec::new()
+fn parse_json(json: String) -> Result<Vec<Event>, serde_json::Error> {
+ let parsed: serde_json::Value = serde_json::from_str(json.as_ref())?;
+ let events: Vec<Event> = serde_json::from_value(parsed["events"].clone())?;
+
+ Ok(events)
}
@@ -27,7 +33,7 @@ mod tests {
let events = parse_json(
include_str!("../testdata/meetup--find-upcoming_events.json")
.to_owned()
- );
+ ).unwrap();
assert_eq!(
events,