use std::fs::File;
use std::io::BufReader;
use rss::{Channel, Item};

pub struct Podcast(Channel);

pub struct Episode(Item);

impl From<Channel> for Podcast {
    fn from(channel: Channel) -> Podcast {
        Podcast(channel)
    }
}

impl From<Item> for Episode {
    fn from(item: Item) -> Episode {
        Episode(item)
    }
}

impl Podcast {
    pub fn episodes(&self) -> Vec<Episode> {
        let mut result = Vec::new();

        let items = self.0.items().to_vec();
        for item in items {
            result.push(Episode::from(item));
        }
        result
    }


    pub fn list_titles(&self) -> Vec<&str> {
        let mut result = Vec::new();

        let items = self.0.items();
        for item in items {
            match item.title() {
                Some(val) => result.push(val),
                None => (),
            }
        }
        result
    }
}

impl Episode {
    pub fn download_url(&self) -> Option<&str> {
        match self.0.enclosure() {
            Some(val) => Some(val.url()),
            None => None, 
        }
    }
}