diff options
| -rw-r--r-- | meetup/src/lib.rs | 2 | ||||
| -rw-r--r-- | src/lib.rs | 5 | ||||
| -rw-r--r-- | src/meetup_rss.rs | 44 | 
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); +    } +} | 
