jingle_ft: Add constructors and setters.

This commit is contained in:
Emmanuel Gil Peyrot 2018-05-04 19:10:45 +02:00
parent a1e95ffb2e
commit 927df2fdb1

View file

@ -19,7 +19,7 @@ use error::Error;
use ns; use ns;
generate_element_with_children!( generate_element_with_children!(
#[derive(PartialEq)] #[derive(PartialEq, Default)]
Range, "range", ns::JINGLE_FT, Range, "range", ns::JINGLE_FT,
attributes: [ attributes: [
offset: u64 = "offset" => default, offset: u64 = "offset" => default,
@ -30,6 +30,12 @@ generate_element_with_children!(
] ]
); );
impl Range {
pub fn new() -> Range {
Default::default()
}
}
type Lang = String; type Lang = String;
generate_id!(Desc); generate_id!(Desc);
@ -45,6 +51,60 @@ pub struct File {
pub hashes: Vec<Hash>, pub hashes: Vec<Hash>,
} }
impl File {
pub fn new() -> File {
File {
date: None,
media_type: None,
name: None,
descs: BTreeMap::new(),
size: None,
range: None,
hashes: Vec::new(),
}
}
pub fn with_date(mut self, date: DateTime) -> File {
self.date = Some(date);
self
}
pub fn with_date_str(mut self, date: &str) -> Result<File, Error> {
self.date = Some(DateTime::from_str(date)?);
Ok(self)
}
pub fn with_media_type(mut self, media_type: String) -> File {
self.media_type = Some(media_type);
self
}
pub fn with_name(mut self, name: String) -> File {
self.name = Some(name);
self
}
pub fn add_desc(mut self, lang: &str, desc: Desc) -> File {
self.descs.insert(Lang::from(lang), desc);
self
}
pub fn with_size(mut self, size: u64) -> File {
self.size = Some(size);
self
}
pub fn with_range(mut self, range: Range) -> File {
self.range = Some(range);
self
}
pub fn add_hash(mut self, hash: Hash) -> File {
self.hashes.push(hash);
self
}
}
impl TryFrom<Element> for File { impl TryFrom<Element> for File {
type Err = Error; type Err = Error;