teamtalk 6.0.0

TeamTalk SDK for Rust
Documentation
use super::middleware::{RequireClientRightsAll, RequireClientRightsAny};
use crate::types::UserRights;

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Permissions {
    rights: UserRights,
}

impl Permissions {
    pub fn new(rights: UserRights) -> Self {
        Self { rights }
    }

    pub fn rights(self) -> UserRights {
        self.rights
    }

    pub fn any(self) -> RequireClientRightsAny {
        RequireClientRightsAny::new(self.rights)
    }

    pub fn all(self) -> RequireClientRightsAll {
        RequireClientRightsAll::new(self.rights)
    }

    pub fn moderator() -> Self {
        Self::new(UserRights::KICK_USERS | UserRights::BAN_USERS | UserRights::MOVE_USERS)
    }

    pub fn admin() -> Self {
        Self::new(
            Self::moderator().rights()
                | UserRights::MODIFY_CHANNELS
                | UserRights::UPDATE_SERVERPROPERTIES
                | UserRights::OPERATOR_ENABLE,
        )
    }
}