diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 5 | ||||
-rw-r--r-- | src/meetup_rss.rs | 44 |
2 files changed, 49 insertions, 0 deletions
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); + } +} |