use serde::{ser::SerializeStruct, Serialize};
use crate::push_notify::NotifySerialize;
#[derive(Debug, Clone)]
pub struct Category(pub String);
impl From<&str> for Category {
fn from(s: &str) -> Self {
Self(s.to_string())
}
}
impl NotifySerialize for Category {
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> {
struct_serialize.serialize_field("category", &self.0)
}
}
#[derive(Debug, Clone)]
pub enum IosPushSound {
Default,
None,
Custom(String),
}
impl Serialize for IosPushSound {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
IosPushSound::Default => serializer.serialize_str("default"),
IosPushSound::None => serializer.serialize_none(),
IosPushSound::Custom(s) => serializer.serialize_str(s),
}
}
}
impl NotifySerialize for IosPushSound {
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> {
struct_serialize.serialize_field("sound", self)
}
}