blocking: Document this module.

This commit is contained in:
Emmanuel Gil Peyrot 2018-08-02 18:15:56 +02:00
parent f7c74498cc
commit a1530c531b

View file

@ -4,6 +4,8 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#![deny(missing_docs)]
use try_from::TryFrom;
use jid::Jid;
@ -14,14 +16,20 @@ use error::Error;
use ns;
use iq::{IqGetPayload, IqSetPayload, IqResultPayload};
generate_empty_element!(BlocklistRequest, "blocklist", BLOCKING);
generate_empty_element!(
/// The element requesting the blocklist, the result iq will contain a
/// [BlocklistResult].
BlocklistRequest, "blocklist", BLOCKING
);
impl IqGetPayload for BlocklistRequest {}
macro_rules! generate_blocking_element {
($elem:ident, $name:tt) => (
($(#[$meta:meta])* $elem:ident, $name:tt) => (
$(#[$meta])*
#[derive(Debug, Clone)]
pub struct $elem {
/// List of JIDs affected by this command.
pub items: Vec<Jid>,
}
@ -58,15 +66,35 @@ macro_rules! generate_blocking_element {
);
}
generate_blocking_element!(BlocklistResult, "blocklist");
generate_blocking_element!(Block, "block");
generate_blocking_element!(Unblock, "unblock");
generate_blocking_element!(
/// The element containing the current blocklist, as a reply from
/// [BlocklistRequest].
BlocklistResult, "blocklist"
);
impl IqResultPayload for BlocklistResult {}
// TODO: Prevent zero elements from being allowed.
generate_blocking_element!(
/// A query to block one or more JIDs.
Block, "block"
);
impl IqSetPayload for Block {}
generate_blocking_element!(
/// A query to unblock one or more JIDs, or all of them.
///
/// Warning: not putting any JID there means clearing out the blocklist.
Unblock, "unblock"
);
impl IqSetPayload for Unblock {}
generate_empty_element!(Blocked, "blocked", BLOCKING_ERRORS);
generate_empty_element!(
/// The application-specific error condition when a message is blocked.
Blocked, "blocked", BLOCKING_ERRORS
);
#[cfg(test)]
mod tests {