diff options
author | Teddy Wing | 2018-04-14 08:26:56 +0200 |
---|---|---|
committer | Teddy Wing | 2018-04-14 08:26:56 +0200 |
commit | 6a6c988c16ab2a709575752d759df7ba6b8e1e81 (patch) | |
tree | 1a6c9d62fc3993f32e1e3801ef2371e238095cb9 /meetup | |
parent | b8974a0be220ad95ff6cc5f16d5e49d408eec10f (diff) | |
download | meetup-find-events-rss-6a6c988c16ab2a709575752d759df7ba6b8e1e81.tar.bz2 |
meetup(find_upcoming_events): Draft of request to Meetup API
Set up the code to make a request to the Meetup API. Still needs an API
key, and we need to call the function correctly in `write_feed`.
Diffstat (limited to 'meetup')
-rw-r--r-- | meetup/src/event.rs | 41 | ||||
-rw-r--r-- | meetup/src/lib.rs | 1 |
2 files changed, 40 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)?) } diff --git a/meetup/src/lib.rs b/meetup/src/lib.rs index 39def21..cd98d9e 100644 --- a/meetup/src/lib.rs +++ b/meetup/src/lib.rs @@ -1,3 +1,4 @@ +extern crate reqwest; extern crate serde; #[macro_use] |