diff options
| author | Austin Hellyer <[email protected]> | 2016-11-10 20:25:32 -0700 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2016-12-29 11:55:10 -0800 |
| commit | 0359f512a8aada5ae0371049eb7c66ecd8d68d84 (patch) | |
| tree | f88dd9b362a2d349d0cdcd13b0859c4cc3329f46 /src/model/utils.rs | |
| parent | Rework some event handles (diff) | |
| download | serenity-0359f512a8aada5ae0371049eb7c66ecd8d68d84.tar.xz serenity-0359f512a8aada5ae0371049eb7c66ecd8d68d84.zip | |
Add guild and channel search
Diffstat (limited to 'src/model/utils.rs')
| -rw-r--r-- | src/model/utils.rs | 30 |
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)?; |