refluxer 0.2.0

Rust API wrapper for Fluxer
Documentation
use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};

use super::id::{ChannelId, GuildId, RoleId, UserId};
use super::permissions::Permissions;
use super::user::User;

#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum VerificationLevel {
    #[default]
    None = 0,
    Low = 1,
    Medium = 2,
    High = 3,
    VeryHigh = 4,
}

#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum DefaultMessageNotifications {
    #[default]
    AllMessages = 0,
    OnlyMentions = 1,
}

#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum ExplicitContentFilter {
    #[default]
    Disabled = 0,
    MembersWithoutRoles = 1,
    AllMembers = 2,
}

#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum MfaLevel {
    #[default]
    None = 0,
    Elevated = 1,
}

#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum NsfwLevel {
    #[default]
    Default = 0,
    Explicit = 1,
    Safe = 2,
    AgeRestricted = 3,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Guild {
    pub id: GuildId,
    #[serde(default)]
    pub name: String,
    pub owner_id: Option<UserId>,
    pub icon: Option<String>,
    pub banner: Option<String>,
    pub splash: Option<String>,
    pub afk_channel_id: Option<ChannelId>,
    #[serde(default)]
    pub afk_timeout: i32,
    #[serde(default)]
    pub verification_level: VerificationLevel,
    #[serde(default)]
    pub default_message_notifications: DefaultMessageNotifications,
    #[serde(default)]
    pub explicit_content_filter: ExplicitContentFilter,
    #[serde(default)]
    pub mfa_level: MfaLevel,
    #[serde(default)]
    pub nsfw_level: NsfwLevel,
    pub rules_channel_id: Option<ChannelId>,
    pub system_channel_id: Option<ChannelId>,
    #[serde(default)]
    pub system_channel_flags: i32,
    pub vanity_url_code: Option<String>,
    #[serde(default)]
    pub features: Vec<String>,
    #[serde(default)]
    pub permissions: Option<Permissions>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Role {
    pub id: RoleId,
    #[serde(default)]
    pub name: String,
    #[serde(default)]
    pub color: i32,
    #[serde(default)]
    pub hoist: bool,
    #[serde(default)]
    pub position: i32,
    #[serde(default)]
    pub permissions: Permissions,
    #[serde(default)]
    pub mentionable: bool,
    pub unicode_emoji: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Member {
    pub user: Option<User>,
    #[serde(default)]
    pub roles: Vec<RoleId>,
    #[serde(default)]
    pub joined_at: String,
    pub nick: Option<String>,
    pub avatar: Option<String>,
    pub banner: Option<String>,
    #[serde(default)]
    pub mute: bool,
    #[serde(default)]
    pub deaf: bool,
    pub communication_disabled_until: Option<String>,
}