use std::fmt;
#[derive(Debug, PartialEq)]
pub enum ResponseCode {
Success = 0,
NoResults = 1,
InvalidParameter = 2,
TokenNotFound = 3,
TokenEmpty = 4,
Unknown = 100,
}
impl Default for ResponseCode {
fn default() -> Self {
ResponseCode::Success
}
}
impl From<u8> for ResponseCode {
fn from(data: u8) -> Self {
match data {
0 => ResponseCode::Success,
1 => ResponseCode::NoResults,
2 => ResponseCode::InvalidParameter,
3 => ResponseCode::TokenNotFound,
4 => ResponseCode::TokenEmpty,
_ => ResponseCode::Unknown,
}
}
}
impl<'de> ::serde::Deserialize<'de> for ResponseCode {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: ::serde::Deserializer<'de>,
{
struct Visitor;
impl<'de> ::serde::de::Visitor<'de> for Visitor {
type Value = ResponseCode;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("positive integer")
}
fn visit_u64<E>(self, value: u64) -> Result<ResponseCode, E>
where
E: ::serde::de::Error,
{
match value {
0 => Ok(ResponseCode::Success),
1 => Ok(ResponseCode::NoResults),
2 => Ok(ResponseCode::InvalidParameter),
3 => Ok(ResponseCode::TokenNotFound),
4 => Ok(ResponseCode::TokenEmpty),
_ => Err(E::custom(format!("unknown ResponseCode with value: {}", value))),
}
}
}
deserializer.deserialize_u64(Visitor)
}
}