// zotapi - Rust wrapper for Sot API as implemented by Hubzilla // Copyright (C) 2018 Harald Eilertsen // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . use client::{self, Client}; use error::Error; 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> { pub fn new(client: &'a Client) -> ItemBuilder<'a> { ItemBuilder { client: client, data: BTreeMap::new(), files: vec![], } } pub fn title(&mut self, text: &'a str) -> &mut ItemBuilder<'a> { self.data.insert("title", text); self } pub fn body(&mut self, text: &'a str) -> &mut ItemBuilder<'a> { self.data.insert("body", text); self } pub fn file(&mut self, fname: &'a str) -> &mut ItemBuilder<'a> { self.files.push(fname); self } pub fn create(&self) -> Result { 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) } } }