use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Deserialize)]
pub struct Bridge {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "technology")]
pub technology: String,
#[serde(rename = "bridge_type")]
pub bridge_type: BridgeType,
#[serde(rename = "bridge_class")]
pub bridge_class: String,
#[serde(rename = "creator")]
pub creator: String,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "channels")]
pub channels: Vec<String>,
#[serde(rename = "video_mode")]
pub video_mode: Option<VideoMode>,
#[serde(rename = "video_source_id")]
pub video_source_id: Option<String>,
#[serde(rename = "creationtime")]
pub creation_time: DateTime<Utc>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub enum BridgeType {
#[serde(rename = "mixing")]
#[default]
Mixing,
#[serde(rename = "holding")]
Holding,
#[serde(rename = "dtmf_events")]
DtmfEvents,
#[serde(rename = "proxy_media")]
ProxyMedia,
#[serde(rename = "video_sfu")]
VideoSFU,
#[serde(rename = "video_single")]
VideoSingle,
#[serde(rename = "sdp_label")]
SDPLabel,
}
#[derive(Clone, Debug, PartialEq, Deserialize, Default)]
pub enum VideoMode {
#[serde(rename = "none")]
#[default]
None,
#[serde(rename = "talker")]
Talker,
#[serde(rename = "sfu")]
Sfu,
#[serde(rename = "single")]
Single,
}