Deserialize reply information
This may come in useful if I want to, you know, remove replies from the feed
This commit is contained in:
parent
892d600754
commit
e1baeffc6e
|
@ -6,8 +6,9 @@ use crate::services::bluesky::internals::cbor::CborValue;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct PostRecord {
|
pub struct PostRecord {
|
||||||
pub langs: Option<Vec<String>>,
|
|
||||||
pub text: String,
|
pub text: String,
|
||||||
|
pub langs: Option<Vec<String>>,
|
||||||
|
pub reply: Option<ReplyRef>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TryFrom<CborValue> for PostRecord {
|
impl TryFrom<CborValue> for PostRecord {
|
||||||
|
@ -25,6 +26,59 @@ impl TryFrom<CborValue> for PostRecord {
|
||||||
.remove("langs")
|
.remove("langs")
|
||||||
.map(|value| value.try_into())
|
.map(|value| value.try_into())
|
||||||
.transpose()?,
|
.transpose()?,
|
||||||
|
reply: map.remove("reply")
|
||||||
|
.map(|value| value.try_into())
|
||||||
|
.transpose()?,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct ReplyRef {
|
||||||
|
pub parent: Ref,
|
||||||
|
pub root: Ref,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<CborValue> for ReplyRef {
|
||||||
|
type Error = Error;
|
||||||
|
|
||||||
|
fn try_from(root: CborValue) -> Result<Self> {
|
||||||
|
let mut map: HashMap<_, _> = root.try_into()?;
|
||||||
|
|
||||||
|
Ok(ReplyRef {
|
||||||
|
parent: map
|
||||||
|
.remove("parent")
|
||||||
|
.ok_or_else(|| anyhow!("Missing field: parent"))?
|
||||||
|
.try_into()?,
|
||||||
|
root: map
|
||||||
|
.remove("root")
|
||||||
|
.ok_or_else(|| anyhow!("Missing field: root"))?
|
||||||
|
.try_into()?,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct Ref {
|
||||||
|
pub cid: String,
|
||||||
|
pub uri: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<CborValue> for Ref {
|
||||||
|
type Error = Error;
|
||||||
|
|
||||||
|
fn try_from(root: CborValue) -> Result<Self> {
|
||||||
|
let mut map: HashMap<_, _> = root.try_into()?;
|
||||||
|
|
||||||
|
Ok(Ref {
|
||||||
|
cid: map
|
||||||
|
.remove("cid")
|
||||||
|
.ok_or_else(|| anyhow!("Missing field: cid"))?
|
||||||
|
.try_into()?,
|
||||||
|
uri: map
|
||||||
|
.remove("uri")
|
||||||
|
.ok_or_else(|| anyhow!("Missing field: uri"))?
|
||||||
|
.try_into()?,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue