aboutsummaryrefslogtreecommitdiffstats
path: root/meetup/src
diff options
context:
space:
mode:
Diffstat (limited to 'meetup/src')
-rw-r--r--meetup/src/event.rs41
-rw-r--r--meetup/src/lib.rs1
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(&params)
+ .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]