refluxer 0.1.0

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

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

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u16)]
pub enum ChannelType {
    Text = 0,
    Voice = 2,
    GroupDm = 3,
    Category = 4,
    Link = 998,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum OverwriteType {
    Role = 0,
    Member = 1,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PermissionOverwrite {
    pub id: String,
    #[serde(rename = "type")]
    pub kind: OverwriteType,
    pub allow: Permissions,
    pub deny: Permissions,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Channel {
    pub id: ChannelId,
    pub name: Option<String>,
    #[serde(rename = "type")]
    pub kind: ChannelType,
    pub guild_id: Option<GuildId>,
    pub topic: Option<String>,
    pub nsfw: Option<bool>,
    pub bitrate: Option<i32>,
    pub user_limit: Option<i32>,
    pub rate_limit_per_user: Option<i32>,
    pub position: Option<i32>,
    pub parent_id: Option<ChannelId>,
    pub last_message_id: Option<MessageId>,
    pub last_pin_timestamp: Option<String>,
    pub owner_id: Option<UserId>,
    pub icon: Option<String>,
    pub recipients: Option<Vec<User>>,
    pub permission_overwrites: Option<Vec<PermissionOverwrite>>,
}