use EnclosureBuilder;
use mime::Mime;
use rss::Enclosure;
use utils::string_utils;
impl EnclosureBuilder
{
pub fn new() -> EnclosureBuilder
{
EnclosureBuilder::default()
}
pub fn url(&mut self, url: &str) -> &mut EnclosureBuilder
{
self.url = url.to_owned();
self
}
pub fn length(&mut self, length: i64) -> &mut EnclosureBuilder
{
self.length = length;
self
}
pub fn mime_type(&mut self, mime_type: &str) -> &mut EnclosureBuilder
{
self.mime_type = mime_type.to_owned();
self
}
pub fn validate(&mut self) -> Result<&mut EnclosureBuilder, String>
{
string_utils::str_to_url(self.url.as_str())?;
let mime = self.mime_type.parse::<Mime>();
if mime.is_err()
{
return Err(format!("Error: {:?}", mime.unwrap_err()));
}
if self.length < 0
{
return Err("Enclosure Length cannot be a negative value".to_owned());
}
Ok(self)
}
pub fn finalize(&self) -> Result<Enclosure, String>
{
let length = string_utils::i64_to_string(self.length)?;
Ok(Enclosure {
url: self.url.clone(),
length: length,
mime_type: self.mime_type.clone(),
})
}
}