refluxer 0.2.0

Rust API wrapper for Fluxer
Documentation
use serde::Deserialize;
use serde_json::Value;
use serde_repr::Deserialize_repr;

use crate::model::id::UserId;

#[derive(Debug, Clone, Deserialize)]
pub struct AuditLog {
    pub audit_log_entries: Vec<AuditLogEntry>,
    #[serde(default)]
    pub users: Vec<Value>,
    #[serde(default)]
    pub webhooks: Vec<Value>,
}

#[derive(Debug, Clone, Deserialize)]
pub struct AuditLogEntry {
    pub id: String,
    pub action_type: AuditLogEvent,
    #[serde(default)]
    pub user_id: Option<UserId>,
    #[serde(default)]
    pub target_id: Option<String>,
    #[serde(default)]
    pub reason: Option<String>,
    /// Action-specific extra data. Shape depends on `action_type` — see
    /// Fluxer's OpenAPI for per-action fields.
    #[serde(default)]
    pub options: Option<Value>,
    /// List of field changes the action produced. Each entry has
    /// `{key, old_value, new_value}` with heterogeneous value shapes.
    #[serde(default)]
    pub changes: Option<Vec<AuditLogChange>>,
}

#[derive(Debug, Clone, Deserialize)]
pub struct AuditLogChange {
    pub key: String,
    #[serde(default)]
    pub old_value: Option<Value>,
    #[serde(default)]
    pub new_value: Option<Value>,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize_repr)]
#[repr(u32)]
pub enum AuditLogEvent {
    GuildUpdate = 1,
    ChannelCreate = 10,
    ChannelUpdate = 11,
    ChannelDelete = 12,
    ChannelOverwriteCreate = 13,
    ChannelOverwriteUpdate = 14,
    ChannelOverwriteDelete = 15,
    MemberKick = 20,
    MemberPrune = 21,
    MemberBanAdd = 22,
    MemberBanRemove = 23,
    MemberUpdate = 24,
    MemberRoleUpdate = 25,
    MemberMove = 26,
    MemberDisconnect = 27,
    BotAdd = 28,
    RoleCreate = 30,
    RoleUpdate = 31,
    RoleDelete = 32,
    InviteCreate = 40,
    InviteUpdate = 41,
    InviteDelete = 42,
    WebhookCreate = 50,
    WebhookUpdate = 51,
    WebhookDelete = 52,
    EmojiCreate = 60,
    EmojiUpdate = 61,
    EmojiDelete = 62,
    MessageDelete = 72,
    MessageBulkDelete = 73,
    MessagePin = 74,
    MessageUnpin = 75,
    StickerCreate = 90,
    StickerUpdate = 91,
    StickerDelete = 92,
}