#[cfg(any(feature = "eventsub", feature = "helix"))]
#[derive(Clone, Debug, PartialEq, Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[cfg_attr(feature = "deny_unknown_fields", serde(deny_unknown_fields))]
#[non_exhaustive]
pub struct DonationAmount {
pub value: i32,
pub decimal_places: i32,
pub currency: String,
}
#[cfg(any(feature = "eventsub", feature = "helix"))]
#[derive(PartialEq, Eq, serde_derive::Deserialize, serde_derive::Serialize, Debug, Clone)]
#[serde(rename_all = "lowercase")]
#[non_exhaustive]
pub enum AnnouncementColor {
#[serde(alias = "BLUE")]
Blue,
#[serde(alias = "GREEN")]
Green,
#[serde(alias = "ORANGE")]
Orange,
#[serde(alias = "PURPLE")]
Purple,
#[serde(alias = "PRIMARY")]
Primary,
}
#[cfg(any(feature = "eventsub", feature = "helix"))]
impl Default for AnnouncementColor {
fn default() -> Self { Self::Primary }
}
#[cfg(any(feature = "eventsub", feature = "helix"))]
#[derive(Debug, Clone, thiserror::Error)]
#[error("invalid color")]
pub struct AnnouncementColorError;
#[cfg(any(feature = "eventsub", feature = "helix"))]
impl std::convert::TryFrom<&str> for AnnouncementColor {
type Error = AnnouncementColorError;
fn try_from(value: &str) -> Result<Self, Self::Error> {
Ok(match &*value.to_lowercase() {
"blue" => Self::Blue,
"green" => Self::Green,
"orange" => Self::Orange,
"purple" => Self::Purple,
"primary" => Self::Primary,
_ => return Err(AnnouncementColorError),
})
}
}