use serde::ser::SerializeStruct;
use crate::push_notify::NotifySerialize;
#[derive(Debug, Clone)]
pub enum Image {
Icon(String),
Image(String),
}
impl Image {
pub fn new_icon(icon_url: impl Into<String>) -> Self {
Self::Icon(icon_url.into())
}
pub fn new_image(image_url: impl Into<String>) -> Self {
Self::Image(image_url.into())
}
}
impl NotifySerialize for Image {
fn serialize_field(&self) -> usize {
1
}
fn serialize<S: serde::Serializer>(
&self,
struct_serialize: &mut <S as serde::Serializer>::SerializeStruct,
) -> Result<(), <S as serde::Serializer>::Error> {
match self {
Image::Icon(url) => struct_serialize.serialize_field("icon", url),
Image::Image(url) => struct_serialize.serialize_field("image", url),
}
}
}