twitch_highway 0.4.1

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

use crate::types::{ConduitId, SessionId, ShardId, Status};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Conduit {
    id: ConduitId,
    shard_count: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConduitShard {
    pub id: ShardId,
    pub status: Status,
    pub transport: Transport,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "method", rename_all = "lowercase")]
pub enum Transport {
    Webhook {
        callback: String,
    },
    Websocket {
        session_id: SessionId,
        #[serde(skip_serializing_if = "Option::is_none")]
        connected_at: Option<DateTime<FixedOffset>>,
        #[serde(skip_serializing_if = "Option::is_none")]
        disconnected_at: Option<DateTime<FixedOffset>>,
    },
}

#[derive(Serialize)]
pub(crate) struct CreateConduitsBody {
    pub shard_count: u64,
}

#[derive(Serialize)]
pub(crate) struct UpdateConduitsBody<'a> {
    #[serde(rename = "id")]
    pub conduit_id: &'a ConduitId,
    pub shard_count: u64,
}