aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meetup/src/lib.rs2
-rw-r--r--src/lib.rs5
-rw-r--r--src/meetup_rss.rs44
3 files changed, 50 insertions, 1 deletions
diff --git a/meetup/src/lib.rs b/meetup/src/lib.rs
index 2ad0358..39def21 100644
--- a/meetup/src/lib.rs
+++ b/meetup/src/lib.rs
@@ -4,4 +4,4 @@ extern crate serde;
extern crate serde_derive;
extern crate serde_json;
-mod event;
+pub mod event;
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..9f8b791
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,5 @@
+extern crate rss;
+
+extern crate meetup;
+
+mod meetup_rss;
diff --git a/src/meetup_rss.rs b/src/meetup_rss.rs
new file mode 100644
index 0000000..6879082
--- /dev/null
+++ b/src/meetup_rss.rs
@@ -0,0 +1,44 @@
+use rss::{Channel, ChannelBuilder, Item};
+
+use meetup::event::Event;
+
+pub fn generate(events: Vec<Event>) -> Result<Channel, String> {
+ let items: Vec<Item> = events.into_iter().map(|event| {
+ let mut item = Item::default();
+ item.set_title(event.name);
+ item.set_link(event.link);
+ item.set_description(event.description);
+
+ item
+ }).collect();
+
+ Ok(
+ ChannelBuilder::default()
+ .title("Test")
+ .description("Description")
+ .items(items)
+ .build()?
+ )
+}
+
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_generate_builds_a_channel() {
+ let x = generate(
+ vec![
+ Event {
+ name: "Summer Sun Celebration".to_owned(),
+ description: "Description".to_owned(),
+ link: "http://example.com".to_owned(),
+ local_date: "2018-04-13".to_owned(),
+ local_time: "18:30".to_owned(),
+ }
+ ]
+ );
+ println!("{:?}", x);
+ }
+}