]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/lib.rs
Accept single object as to for arrays too (#2048)
[lemmy.git] / crates / apub / src / lib.rs
index 44c2d0d578da0bbbdac52e37290b614756a33e90..94752a39787c0cde43bd11fadc94a46c44301446 100644 (file)
@@ -112,6 +112,25 @@ where
   })
 }
 
+pub(crate) fn deserialize_one<'de, T, D>(deserializer: D) -> Result<[T; 1], D::Error>
+where
+  T: Deserialize<'de>,
+  D: Deserializer<'de>,
+{
+  #[derive(Deserialize)]
+  #[serde(untagged)]
+  enum MaybeArray<T> {
+    Simple(T),
+    Array([T; 1]),
+  }
+
+  let result: MaybeArray<T> = Deserialize::deserialize(deserializer)?;
+  Ok(match result {
+    MaybeArray::Simple(value) => [value],
+    MaybeArray::Array(value) => value,
+  })
+}
+
 pub enum EndpointType {
   Community,
   Person,