twitch_tohell 0.1.1

Twitch EventSub webhook and WebSocket support
Documentation
use serde::{Deserialize, Serialize};

use crate::{BroadcasterId, EmoteId, UserId};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChannelSubscriptionEnd {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
    pub broadcaster_user_id: BroadcasterId,
    pub broadcaster_user_login: String,
    pub broadcaster_user_name: String,
    pub tier: String,
    pub is_gift: bool,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChannelSubscriptionGift {
    pub user_id: Option<UserId>,
    pub user_login: Option<String>,
    pub user_name: Option<String>,
    pub broadcaster_user_id: BroadcasterId,
    pub broadcaster_user_login: String,
    pub broadcaster_user_name: String,
    pub total: u32,
    pub tier: String,
    pub cumulative_total: Option<u32>,
    pub is_anonymous: bool,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChannelSubscriptionMessage {
    pub user_id: UserId,
    pub user_login: String,
    pub user_name: String,
    pub broadcaster_user_id: BroadcasterId,
    pub broadcaster_user_login: String,
    pub broadcaster_user_name: String,
    pub tier: String,
    pub message: Message,
    pub cumulative_months: u32,
    pub streak_months: Option<u32>,
    pub duration_months: u32,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Message {
    pub text: String,
    pub emotes: Vec<Emote>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Emote {
    begin: u64,
    end: u64,
    id: EmoteId,
}