diff options
Diffstat (limited to 'meetup/src/event.rs')
-rw-r--r-- | meetup/src/event.rs | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/meetup/src/event.rs b/meetup/src/event.rs index ebd3174..615403e 100644 --- a/meetup/src/event.rs +++ b/meetup/src/event.rs @@ -1,5 +1,8 @@ +use reqwest; use serde_json; +use std::error::Error; + #[derive(Debug, Deserialize, PartialEq)] pub struct Event { @@ -12,10 +15,44 @@ pub struct Event { } -pub fn find_upcoming_events() -> Result<Vec<Event>, serde_json::Error> { +const MEETUP_BASE_URL: &'static str = "https://api.meetup.com"; + +// lat +// lon +// order 'time' +// [radius] +// end_date_range +// [page] +pub fn find_upcoming_events( + latitude: String, + longitude: String, + end_date_range: String, + radius: Option<String>, + page: Option<String>, +) -> Result<Vec<Event>, Box<Error>> { let json = include_str!("../testdata/meetup--find-upcoming_events.json").to_owned(); - parse_json(json) + let mut params = vec![ + ("lat", latitude), + ("lon", longitude), + ("end_date_range", end_date_range), + ("order", "time".to_owned()), + ]; + + if let Some(r) = radius { + params.push(("radius", r)) + } + + if let Some(p) = page { + params.push(("page", p)) + } + + let client = reqwest::Client::new(); + client.get(&format!("{}{}", MEETUP_BASE_URL, "/find/upcoming_events")) + .query(¶ms) + .send()?; + + Ok(parse_json(json)?) } |