diff options
Diffstat (limited to 'src/item.rs')
-rw-r--r-- | src/item.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/item.rs b/src/item.rs index 3440fd5..326e4e8 100644 --- a/src/item.rs +++ b/src/item.rs @@ -21,6 +21,7 @@ use std::collections::BTreeMap; pub struct ItemBuilder<'a> { client : &'a Client, data : BTreeMap<&'a str, &'a str>, + files: Vec<&'a str>, } impl<'a> ItemBuilder<'a> { @@ -28,6 +29,7 @@ impl<'a> ItemBuilder<'a> { ItemBuilder { client: client, data: BTreeMap::new(), + files: vec![], } } @@ -41,7 +43,17 @@ impl<'a> ItemBuilder<'a> { self } + pub fn file(&mut self, fname: &'a str) -> &mut ItemBuilder<'a> { + self.files.push(fname); + self + } + pub fn create(&self) -> Result<String, Error> { - self.client.post_data(client::ZOTAPI_ITEM_UPDATE_PATH, &self.data) + if self.files.is_empty() { + self.client.post_data(client::ZOTAPI_ITEM_UPDATE_PATH, &self.data) + } + else { + self.client.post_multipart(client::ZOTAPI_ITEM_UPDATE_PATH, &self.data, &self.files) + } } } |