use std::collections::BTreeMap;
use serde_json;
use serde_json::Value;
use client::Client;
use error;
pub trait EmojisExt {
fn get_emojis(&mut self) -> Result<Option<BTreeMap<String, String>>, error::Error>;
}
impl EmojisExt for Client {
fn get_emojis(&mut self) -> Result<Option<BTreeMap<String, String>>, error::Error> {
let mut response = try!(self.get("/emojis".to_string(), None));
let response_str = try!(Client::response_to_string(&mut response));
let response_val: Value = try!(serde_json::from_str(&response_str[..]).map_err(error::Error::Parsing));
let response_obj: BTreeMap<String, Value> = match response_val.as_object(){
Some(obj) => obj.clone(),
None => return Ok(None)
};
let mut emojis: BTreeMap<String, String> = BTreeMap::new();
for (key, val) in response_obj {
emojis.insert(key, val.as_str().unwrap_or_else(|| "").to_string().clone());
}
Ok(Some(emojis))
}
}