use serde::Deserialize;
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Eq)]
pub struct RevokeRequest {
pub token: String,
#[serde(default)]
pub token_type_hint: Option<String>,
}
#[derive(Debug, PartialEq, Eq)]
pub enum HintedKind {
Refresh,
Access,
Unknown,
}
impl HintedKind {
pub fn from_hint(s: Option<&str>) -> Self {
match s {
Some("refresh_token") => Self::Refresh,
Some("access_token") => Self::Access,
_ => Self::Unknown,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn hinted_kind_parsing() {
assert_eq!(
HintedKind::from_hint(Some("refresh_token")),
HintedKind::Refresh
);
assert_eq!(
HintedKind::from_hint(Some("access_token")),
HintedKind::Access
);
assert_eq!(HintedKind::from_hint(Some("garbage")), HintedKind::Unknown);
assert_eq!(HintedKind::from_hint(None), HintedKind::Unknown);
}
}