use crate::description::UNSPECIFIED_STR;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Default, Debug, PartialEq, Eq, Copy, Clone, Serialize, Deserialize)]
pub enum RTCSdpType {
#[default]
Unspecified = 0,
#[serde(rename = "offer")]
Offer,
#[serde(rename = "pranswer")]
Pranswer,
#[serde(rename = "answer")]
Answer,
#[serde(rename = "rollback")]
Rollback,
}
const SDP_TYPE_OFFER_STR: &str = "offer";
const SDP_TYPE_PRANSWER_STR: &str = "pranswer";
const SDP_TYPE_ANSWER_STR: &str = "answer";
const SDP_TYPE_ROLLBACK_STR: &str = "rollback";
impl From<&str> for RTCSdpType {
fn from(raw: &str) -> Self {
match raw {
SDP_TYPE_OFFER_STR => RTCSdpType::Offer,
SDP_TYPE_PRANSWER_STR => RTCSdpType::Pranswer,
SDP_TYPE_ANSWER_STR => RTCSdpType::Answer,
SDP_TYPE_ROLLBACK_STR => RTCSdpType::Rollback,
_ => RTCSdpType::Unspecified,
}
}
}
impl fmt::Display for RTCSdpType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match *self {
RTCSdpType::Offer => write!(f, "{SDP_TYPE_OFFER_STR}"),
RTCSdpType::Pranswer => write!(f, "{SDP_TYPE_PRANSWER_STR}"),
RTCSdpType::Answer => write!(f, "{SDP_TYPE_ANSWER_STR}"),
RTCSdpType::Rollback => write!(f, "{SDP_TYPE_ROLLBACK_STR}"),
_ => write!(f, "{}", UNSPECIFIED_STR),
}
}
}