diff options
Diffstat (limited to 'src/auth/types')
| -rw-r--r-- | src/auth/types/property_map.rs | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/src/auth/types/property_map.rs b/src/auth/types/property_map.rs deleted file mode 100644 index ddfc9ce..0000000 --- a/src/auth/types/property_map.rs +++ /dev/null @@ -1,61 +0,0 @@ -use std::fmt::Formatter; -use multimap::MultiMap; -use serde::de::{SeqAccess, Visitor}; -use serde::{Deserializer, Serializer}; -use crate::auth::Property; - -pub type PropertyMap = MultiMap<String, Property>; - -pub mod legacy { - use serde::Serializer; - use super::PropertyMap; - - pub fn serialize<S>(value: &PropertyMap, serializer: S) -> Result<S::Ok, S::Error> - where S: Serializer - { - serializer.collect_map(value.iter_all() - .filter_map(|(k, v)| { - if v.is_empty() { - None - } else { - Some((k, v.iter().map(|p| &p.value).collect::<Vec<_>>())) - } - })) - } -} - -pub fn serialize<S>(value: &PropertyMap, serializer: S) -> Result<S::Ok, S::Error> -where - S: Serializer -{ - serializer.collect_seq(value.flat_iter().map(|(_, v)| v)) -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result<PropertyMap, D::Error> -where - D: Deserializer<'de> -{ - struct PropertyMapVisitor; - - impl<'de> Visitor<'de> for PropertyMapVisitor { - type Value = PropertyMap; - - fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result { - formatter.write_str("a property map") - } - - fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error> - where - A: SeqAccess<'de>, - { - let mut map = MultiMap::new() as PropertyMap; - while let Some(prop) = seq.next_element::<Property>()? { - map.insert(prop.name.clone(), prop); - } - - Ok(map) - } - } - - deserializer.deserialize_seq(PropertyMapVisitor) -} |
