Add from_id_value associated method to create a StateEvent from id+json
This commit is contained in:
parent
5e7f60e5d9
commit
d0d2f77998
@ -35,20 +35,22 @@ impl Serialize for StateEvent {
|
|||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
|
|
||||||
match self {
|
match self {
|
||||||
Self::Full(_id, ev) => {
|
Self::Full(id, ev) => {
|
||||||
// TODO: do we want to add the eventId when we
|
// TODO: do we want to add the eventId when we
|
||||||
// serialize
|
// serialize
|
||||||
let val: CanonicalJsonValue = serde_json::to_value(ev)
|
let val: CanonicalJsonValue = serde_json::to_value(ev)
|
||||||
.map_err(S::Error::custom)?
|
.map_err(S::Error::custom)?
|
||||||
.try_into()
|
.try_into()
|
||||||
.map_err(S::Error::custom)?;
|
.map_err(S::Error::custom)?;
|
||||||
// let val = val
|
|
||||||
// .as_object_mut()
|
|
||||||
// .ok_or_else(|| S::Error::custom("PDU is not an object"))?;
|
|
||||||
// val.insert("event_id".into(), serde_json::json!(_id));
|
|
||||||
|
|
||||||
match val {
|
match val {
|
||||||
CanonicalJsonValue::Object(obj) => obj.serialize(serializer),
|
CanonicalJsonValue::Object(mut obj) => {
|
||||||
|
obj.insert(
|
||||||
|
"event_id".into(),
|
||||||
|
ruma::serde::to_canonical_value(id).map_err(S::Error::custom)?,
|
||||||
|
);
|
||||||
|
obj.serialize(serializer)
|
||||||
|
}
|
||||||
_ => panic!("Pdu not an object"),
|
_ => panic!("Pdu not an object"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,6 +131,13 @@ pub struct Requester<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl StateEvent {
|
impl StateEvent {
|
||||||
|
pub fn from_id_value(id: EventId, json: serde_json::Value) -> Result<Self, serde_json::Error> {
|
||||||
|
Ok(Self::Full(
|
||||||
|
id,
|
||||||
|
Pdu::RoomV3Pdu(serde_json::from_value(json)?),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn to_requester(&self) -> Requester<'_> {
|
pub fn to_requester(&self) -> Requester<'_> {
|
||||||
Requester {
|
Requester {
|
||||||
prev_event_ids: self.prev_event_ids(),
|
prev_event_ids: self.prev_event_ids(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user