pub mod callback;
pub mod feature_flags;
pub mod protos;
pub mod user_id;
pub mod validation;
pub use callback::Callback;
pub use feature_flags::FeatureFlags;
use protobuf::Message;
pub use user_id::{is_system_user, to_user_id_bytes, user_id_bytes_to_string};
pub type Text = Result<String, anyhow::Error>;
pub type Binary = Result<Vec<u8>, anyhow::Error>;
pub const SYSTEM_USER_ID: &str = "system-&^%$#@!";
impl std::fmt::Display for protos::media_packet::media_packet::MediaType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
protos::media_packet::media_packet::MediaType::MEDIA_TYPE_UNKNOWN => {
write!(f, "UNKNOWN")
}
protos::media_packet::media_packet::MediaType::AUDIO => write!(f, "audio"),
protos::media_packet::media_packet::MediaType::VIDEO => write!(f, "video"),
protos::media_packet::media_packet::MediaType::SCREEN => write!(f, "screen"),
protos::media_packet::media_packet::MediaType::HEARTBEAT => write!(f, "heartbeat"),
protos::media_packet::media_packet::MediaType::RTT => write!(f, "rtt"),
protos::media_packet::media_packet::MediaType::KEYFRAME_REQUEST => {
write!(f, "keyframe_request")
}
}
}
}
impl std::fmt::Display for protos::packet_wrapper::packet_wrapper::PacketType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
protos::packet_wrapper::packet_wrapper::PacketType::PACKET_TYPE_UNKNOWN => {
write!(f, "UNKNOWN")
}
protos::packet_wrapper::packet_wrapper::PacketType::AES_KEY => write!(f, "AES_KEY"),
protos::packet_wrapper::packet_wrapper::PacketType::RSA_PUB_KEY => {
write!(f, "RSA_PUB_KEY")
}
protos::packet_wrapper::packet_wrapper::PacketType::MEDIA => write!(f, "MEDIA"),
protos::packet_wrapper::packet_wrapper::PacketType::CONNECTION => {
write!(f, "CONNECTION")
}
protos::packet_wrapper::packet_wrapper::PacketType::DIAGNOSTICS => {
write!(f, "DIAGNOSTICS")
}
protos::packet_wrapper::packet_wrapper::PacketType::HEALTH => {
write!(f, "HEALTH")
}
protos::packet_wrapper::packet_wrapper::PacketType::MEETING => {
write!(f, "MEETING")
}
protos::packet_wrapper::packet_wrapper::PacketType::SESSION_ASSIGNED => {
write!(f, "SESSION_ASSIGNED")
}
protos::packet_wrapper::packet_wrapper::PacketType::CONGESTION => {
write!(f, "CONGESTION")
}
}
}
}
impl From<Text> for protos::packet_wrapper::PacketWrapper {
fn from(t: Text) -> Self {
protos::packet_wrapper::PacketWrapper::parse_from_bytes(&t.unwrap().into_bytes()).unwrap()
}
}
impl From<Binary> for protos::packet_wrapper::PacketWrapper {
fn from(bin: Binary) -> Self {
protos::packet_wrapper::PacketWrapper::parse_from_bytes(&bin.unwrap()).unwrap()
}
}
pub fn truthy(s: Option<&str>) -> bool {
if let Some(s) = s {
["true".to_string(), "1".to_string()].contains(&s.to_lowercase())
} else {
false
}
}