twitch_tohell 0.1.1

Twitch EventSub webhook and WebSocket support
Documentation
pub mod v1;
pub mod v2;

use chrono::{DateTime, FixedOffset};
use serde::{Deserialize, Serialize};

use crate::UserId;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FollowersModeration {
    pub follow_duration_minutes: u32,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SlowModeration {
    pub wait_time_seconds: u32,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VipModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UnvipModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UnmodModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BanModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
    pub reason: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UnbanModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimeoutModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
    pub reason: Option<String>,
    pub expires_at: DateTime<FixedOffset>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UntimeoutModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RaidModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
    pub viewer_count: u32,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UnraidModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteModeration {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
    pub message_id: String,
    pub message_body: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AutomodTermsModeration {
    pub action: String,
    pub list: String,
    pub terms: Vec<String>,
    pub from_automod: bool,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UnbanRequestModeration {
    pub is_approved: bool,
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
    pub moderator_message: String,
}