aboutsummaryrefslogtreecommitdiff
path: root/src/model/utils.rs
diff options
context:
space:
mode:
authorAustin Hellyer <[email protected]>2016-11-10 20:25:32 -0700
committerAustin Hellyer <[email protected]>2016-12-29 11:55:10 -0800
commit0359f512a8aada5ae0371049eb7c66ecd8d68d84 (patch)
treef88dd9b362a2d349d0cdcd13b0859c4cc3329f46 /src/model/utils.rs
parentRework some event handles (diff)
downloadserenity-0359f512a8aada5ae0371049eb7c66ecd8d68d84.tar.xz
serenity-0359f512a8aada5ae0371049eb7c66ecd8d68d84.zip
Add guild and channel search
Diffstat (limited to 'src/model/utils.rs')
-rw-r--r--src/model/utils.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/model/utils.rs b/src/model/utils.rs
index 897eb62..e499fd2 100644
--- a/src/model/utils.rs
+++ b/src/model/utils.rs
@@ -5,6 +5,7 @@ use super::{
Emoji,
EmojiId,
Member,
+ Message,
Presence,
ReadState,
Relationship,
@@ -173,6 +174,35 @@ pub fn decode_roles(value: Value) -> Result<HashMap<RoleId, Role>> {
Ok(roles)
}
+pub fn decode_search_results(value: Value) -> Result<Vec<Vec<Message>>> {
+ let array = match value {
+ Value::Array(v) => v,
+ value => return Err(Error::Decode("Expected message set array", value)),
+ };
+
+ let mut sets: Vec<Vec<Message>> = vec![];
+
+ for arr in array {
+ let arr = match arr {
+ Value::Array(v) => v,
+ value => return Err(Error::Decode("Expected message set array", value)),
+ };
+
+ let mut messages: Vec<Message> = vec![];
+
+ for item in arr {
+ messages.push(match item {
+ Value::Object(v) => try!(Message::decode(Value::Object(v))),
+ value => return Err(Error::Decode("Expected search message", value)),
+ });
+ }
+
+ sets.push(messages);
+ }
+
+ Ok(sets)
+}
+
pub fn decode_shards(value: Value) -> Result<[u64; 2]> {
let array = into_array(value)?;