use error::Error;
use quick_xml::{Element, Event, XmlWriter};
use quick_xml::error::Error as XmlError;
use toxml::{ToXml, XmlWriterExt};
#[derive(Debug, Default, Clone, PartialEq)]
pub struct ITunesOwner {
name: Option<String>,
email: Option<String>,
}
impl ITunesOwner {
pub fn name(&self) -> Option<&str> {
self.name.as_ref().map(|s| s.as_str())
}
pub fn email(&self) -> Option<&str> {
self.email.as_ref().map(|s| s.as_str())
}
}
impl ToXml for ITunesOwner {
fn to_xml<W: ::std::io::Write>(&self, writer: &mut XmlWriter<W>) -> Result<(), XmlError> {
let element = Element::new(b"itunes:owner");
writer.write(Event::Start(element.clone()))?;
if let Some(name) = self.name.as_ref() {
writer.write_text_element(b"name", name)?;
}
if let Some(email) = self.email.as_ref() {
writer.write_text_element(b"email", email)?;
}
writer.write(Event::End(element))
}
}
#[derive(Debug, Clone, Default)]
pub struct ITunesOwnerBuilder {
name: Option<String>,
email: Option<String>,
}
impl ITunesOwnerBuilder {
pub fn new() -> ITunesOwnerBuilder {
ITunesOwnerBuilder::default()
}
pub fn name(mut self, name: Option<String>) -> ITunesOwnerBuilder {
self.name = name;
self
}
pub fn email(mut self, email: Option<String>) -> ITunesOwnerBuilder {
self.email = email;
self
}
pub fn finalize(self) -> Result<ITunesOwner, Error> {
Ok(ITunesOwner {
name: self.name,
email: self.email,
})
}
}