Optimize formatted event serializations.
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
20
Cargo.lock
generated
20
Cargo.lock
generated
@@ -3659,7 +3659,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma"
|
name = "ruma"
|
||||||
version = "0.13.0"
|
version = "0.13.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"assign",
|
"assign",
|
||||||
"js_int",
|
"js_int",
|
||||||
@@ -3678,7 +3678,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-appservice-api"
|
name = "ruma-appservice-api"
|
||||||
version = "0.13.0"
|
version = "0.13.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"ruma-common",
|
"ruma-common",
|
||||||
@@ -3690,7 +3690,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-client-api"
|
name = "ruma-client-api"
|
||||||
version = "0.21.0"
|
version = "0.21.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"assign",
|
"assign",
|
||||||
@@ -3715,7 +3715,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-common"
|
name = "ruma-common"
|
||||||
version = "0.16.0"
|
version = "0.16.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"base64",
|
"base64",
|
||||||
@@ -3749,7 +3749,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-events"
|
name = "ruma-events"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"as_variant",
|
"as_variant",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
@@ -3776,7 +3776,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-federation-api"
|
name = "ruma-federation-api"
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"headers",
|
"headers",
|
||||||
@@ -3799,7 +3799,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-identifiers-validation"
|
name = "ruma-identifiers-validation"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"thiserror 2.0.17",
|
"thiserror 2.0.17",
|
||||||
@@ -3808,7 +3808,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-macros"
|
name = "ruma-macros"
|
||||||
version = "0.16.0"
|
version = "0.16.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
@@ -3823,7 +3823,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-push-gateway-api"
|
name = "ruma-push-gateway-api"
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js_int",
|
"js_int",
|
||||||
"ruma-common",
|
"ruma-common",
|
||||||
@@ -3835,7 +3835,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "ruma-signatures"
|
name = "ruma-signatures"
|
||||||
version = "0.18.0"
|
version = "0.18.0"
|
||||||
source = "git+https://github.com/matrix-construct/ruma?rev=4a3dd12e76c80eb60ba5f9324435c8a749cff303#4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
source = "git+https://github.com/matrix-construct/ruma?rev=f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2#f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"ed25519-dalek",
|
"ed25519-dalek",
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ default-features = false
|
|||||||
|
|
||||||
[workspace.dependencies.ruma]
|
[workspace.dependencies.ruma]
|
||||||
git = "https://github.com/matrix-construct/ruma"
|
git = "https://github.com/matrix-construct/ruma"
|
||||||
rev = "4a3dd12e76c80eb60ba5f9324435c8a749cff303"
|
rev = "f8aa292ce48f28ee6c82b29a811d26c6ccb5aad2"
|
||||||
features = [
|
features = [
|
||||||
"__compat",
|
"__compat",
|
||||||
"appservice-api-c",
|
"appservice-api-c",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use ruma::{
|
use ruma::{
|
||||||
|
CanonicalJsonMemberOptional as JsonMember, CanonicalJsonMembersOptional as JsonMembers,
|
||||||
events::{
|
events::{
|
||||||
AnyMessageLikeEvent, AnyStateEvent, AnyStrippedStateEvent, AnySyncMessageLikeEvent,
|
AnyMessageLikeEvent, AnyStateEvent, AnyStrippedStateEvent, AnySyncMessageLikeEvent,
|
||||||
AnySyncStateEvent, AnySyncTimelineEvent, AnyTimelineEvent, StateEvent,
|
AnySyncStateEvent, AnySyncTimelineEvent, AnyTimelineEvent, StateEvent,
|
||||||
@@ -6,7 +7,7 @@ use ruma::{
|
|||||||
},
|
},
|
||||||
serde::Raw,
|
serde::Raw,
|
||||||
};
|
};
|
||||||
use serde_json::json;
|
use serde_json::value::to_raw_value;
|
||||||
|
|
||||||
use super::{Event, redact};
|
use super::{Event, redact};
|
||||||
|
|
||||||
@@ -22,25 +23,20 @@ impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnySyncTimelineEvent> {
|
|||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let (redacts, content) = redact::copy(event);
|
let (redacts, content) = redact::copy(event);
|
||||||
let mut json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": content,
|
("content", Some(content.into())),
|
||||||
"event_id": event.event_id(),
|
("event_id", Some(event.event_id().as_str().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"sender": event.sender(),
|
("redacts", redacts.map(|e| e.as_str().into())),
|
||||||
"type": event.event_type(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
});
|
("state_key", event.state_key().map(Into::into)),
|
||||||
|
("type", Some(event.event_type().to_string().into())),
|
||||||
|
("unsigned", event.unsigned().map(Into::into)),
|
||||||
|
];
|
||||||
|
|
||||||
if let Some(redacts) = redacts {
|
to_raw_value(&JsonMembers(&members))
|
||||||
json["redacts"] = json!(redacts);
|
.map(Self::from_json)
|
||||||
}
|
.expect("Failed to serialize Event value")
|
||||||
if let Some(state_key) = event.state_key() {
|
|
||||||
json["state_key"] = json!(state_key);
|
|
||||||
}
|
|
||||||
if let Some(unsigned) = event.unsigned() {
|
|
||||||
json["unsigned"] = json!(unsigned);
|
|
||||||
}
|
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,26 +48,21 @@ impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnyTimelineEvent> {
|
|||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let (redacts, content) = redact::copy(event);
|
let (redacts, content) = redact::copy(event);
|
||||||
let mut json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": content,
|
("content", Some(content.into())),
|
||||||
"event_id": event.event_id(),
|
("event_id", Some(event.event_id().as_str().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"room_id": event.room_id(),
|
("redacts", redacts.map(|e| e.as_str().into())),
|
||||||
"sender": event.sender(),
|
("room_id", Some(event.room_id().as_str().into())),
|
||||||
"type": event.kind(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
});
|
("state_key", event.state_key().map(Into::into)),
|
||||||
|
("type", Some(event.event_type().to_string().into())),
|
||||||
|
("unsigned", event.unsigned().map(Into::into)),
|
||||||
|
];
|
||||||
|
|
||||||
if let Some(redacts) = redacts {
|
to_raw_value(&JsonMembers(&members))
|
||||||
json["redacts"] = json!(redacts);
|
.map(Self::from_json)
|
||||||
}
|
.expect("Failed to serialize Event value")
|
||||||
if let Some(state_key) = event.state_key() {
|
|
||||||
json["state_key"] = json!(state_key);
|
|
||||||
}
|
|
||||||
if let Some(unsigned) = event.unsigned() {
|
|
||||||
json["unsigned"] = json!(unsigned);
|
|
||||||
}
|
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,26 +74,21 @@ impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnyMessageLikeEvent> {
|
|||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let (redacts, content) = redact::copy(event);
|
let (redacts, content) = redact::copy(event);
|
||||||
let mut json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": content,
|
("content", Some(content.into())),
|
||||||
"event_id": event.event_id(),
|
("event_id", Some(event.event_id().as_str().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"room_id": event.room_id(),
|
("redacts", redacts.map(|e| e.as_str().into())),
|
||||||
"sender": event.sender(),
|
("room_id", Some(event.room_id().as_str().into())),
|
||||||
"type": event.kind(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
});
|
("state_key", event.state_key().map(Into::into)),
|
||||||
|
("type", Some(event.event_type().to_string().into())),
|
||||||
|
("unsigned", event.unsigned().map(Into::into)),
|
||||||
|
];
|
||||||
|
|
||||||
if let Some(redacts) = &redacts {
|
to_raw_value(&JsonMembers(&members))
|
||||||
json["redacts"] = json!(redacts);
|
.map(Self::from_json)
|
||||||
}
|
.expect("Failed to serialize Event value")
|
||||||
if let Some(state_key) = event.state_key() {
|
|
||||||
json["state_key"] = json!(state_key);
|
|
||||||
}
|
|
||||||
if let Some(unsigned) = event.unsigned() {
|
|
||||||
json["unsigned"] = json!(unsigned);
|
|
||||||
}
|
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,25 +100,20 @@ impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnySyncMessageLikeEvent> {
|
|||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let (redacts, content) = redact::copy(event);
|
let (redacts, content) = redact::copy(event);
|
||||||
let mut json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": content,
|
("content", Some(content.into())),
|
||||||
"event_id": event.event_id(),
|
("event_id", Some(event.event_id().as_str().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"sender": event.sender(),
|
("redacts", redacts.map(|e| e.as_str().into())),
|
||||||
"type": event.kind(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
});
|
("state_key", event.state_key().map(Into::into)),
|
||||||
|
("type", Some(event.event_type().to_string().into())),
|
||||||
|
("unsigned", event.unsigned().map(Into::into)),
|
||||||
|
];
|
||||||
|
|
||||||
if let Some(redacts) = &redacts {
|
to_raw_value(&JsonMembers(&members))
|
||||||
json["redacts"] = json!(redacts);
|
.map(Self::from_json)
|
||||||
}
|
.expect("Failed to serialize Event value")
|
||||||
if let Some(state_key) = event.state_key() {
|
|
||||||
json["state_key"] = json!(state_key);
|
|
||||||
}
|
|
||||||
if let Some(unsigned) = event.unsigned() {
|
|
||||||
json["unsigned"] = json!(unsigned);
|
|
||||||
}
|
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,21 +124,20 @@ impl<E: Event> From<Owned<E>> for Raw<AnyStateEvent> {
|
|||||||
impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnyStateEvent> {
|
impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnyStateEvent> {
|
||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let mut json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": event.content(),
|
("content", Some(event.content().into())),
|
||||||
"event_id": event.event_id(),
|
("event_id", Some(event.event_id().as_str().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"room_id": event.room_id(),
|
("room_id", Some(event.room_id().as_str().into())),
|
||||||
"sender": event.sender(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
"state_key": event.state_key(),
|
("state_key", event.state_key().map(Into::into)),
|
||||||
"type": event.kind(),
|
("type", Some(event.event_type().to_string().into())),
|
||||||
});
|
("unsigned", event.unsigned().map(Into::into)),
|
||||||
|
];
|
||||||
|
|
||||||
if let Some(unsigned) = event.unsigned() {
|
to_raw_value(&JsonMembers(&members))
|
||||||
json["unsigned"] = json!(unsigned);
|
.map(Self::from_json)
|
||||||
}
|
.expect("Failed to serialize Event value")
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,20 +148,19 @@ impl<E: Event> From<Owned<E>> for Raw<AnySyncStateEvent> {
|
|||||||
impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnySyncStateEvent> {
|
impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnySyncStateEvent> {
|
||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let mut json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": event.content(),
|
("content", Some(event.content().into())),
|
||||||
"event_id": event.event_id(),
|
("event_id", Some(event.event_id().as_str().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"sender": event.sender(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
"state_key": event.state_key(),
|
("state_key", event.state_key().map(Into::into)),
|
||||||
"type": event.kind(),
|
("type", Some(event.event_type().to_string().into())),
|
||||||
});
|
("unsigned", event.unsigned().map(Into::into)),
|
||||||
|
];
|
||||||
|
|
||||||
if let Some(unsigned) = event.unsigned() {
|
to_raw_value(&JsonMembers(&members))
|
||||||
json["unsigned"] = json!(unsigned);
|
.map(Self::from_json)
|
||||||
}
|
.expect("Failed to serialize Event value")
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,14 +171,16 @@ impl<E: Event> From<Owned<E>> for Raw<AnyStrippedStateEvent> {
|
|||||||
impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnyStrippedStateEvent> {
|
impl<'a, E: Event> From<Ref<'a, E>> for Raw<AnyStrippedStateEvent> {
|
||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": event.content(),
|
("content", Some(event.content().into())),
|
||||||
"sender": event.sender(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
"state_key": event.state_key(),
|
("state_key", event.state_key().map(Into::into)),
|
||||||
"type": event.kind(),
|
("type", Some(event.event_type().to_string().into())),
|
||||||
});
|
];
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
to_raw_value(&JsonMembers(&members))
|
||||||
|
.map(Self::from_json)
|
||||||
|
.expect("Failed to serialize Event value")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,15 +191,17 @@ impl<E: Event> From<Owned<E>> for Raw<HierarchySpaceChildEvent> {
|
|||||||
impl<'a, E: Event> From<Ref<'a, E>> for Raw<HierarchySpaceChildEvent> {
|
impl<'a, E: Event> From<Ref<'a, E>> for Raw<HierarchySpaceChildEvent> {
|
||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": event.content(),
|
("content", Some(event.content().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"sender": event.sender(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
"state_key": event.state_key(),
|
("state_key", event.state_key().map(Into::into)),
|
||||||
"type": event.kind(),
|
("type", Some(event.event_type().to_string().into())),
|
||||||
});
|
];
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
to_raw_value(&JsonMembers(&members))
|
||||||
|
.map(Self::from_json)
|
||||||
|
.expect("Failed to serialize Event value")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,21 +212,20 @@ impl<E: Event> From<Owned<E>> for Raw<StateEvent<RoomMemberEventContent>> {
|
|||||||
impl<'a, E: Event> From<Ref<'a, E>> for Raw<StateEvent<RoomMemberEventContent>> {
|
impl<'a, E: Event> From<Ref<'a, E>> for Raw<StateEvent<RoomMemberEventContent>> {
|
||||||
fn from(event: Ref<'a, E>) -> Self {
|
fn from(event: Ref<'a, E>) -> Self {
|
||||||
let event = event.0;
|
let event = event.0;
|
||||||
let mut json = json!({
|
let members: [JsonMember<_>; _] = [
|
||||||
"content": event.content(),
|
("content", Some(event.content().into())),
|
||||||
"event_id": event.event_id(),
|
("event_id", Some(event.event_id().as_str().into())),
|
||||||
"origin_server_ts": event.origin_server_ts(),
|
("origin_server_ts", Some(event.origin_server_ts().get().into())),
|
||||||
"redacts": event.redacts(),
|
("redacts", event.redacts().map(|e| e.as_str().into())),
|
||||||
"room_id": event.room_id(),
|
("room_id", Some(event.room_id().as_str().into())),
|
||||||
"sender": event.sender(),
|
("sender", Some(event.sender().as_str().into())),
|
||||||
"state_key": event.state_key(),
|
("state_key", event.state_key().map(Into::into)),
|
||||||
"type": event.kind(),
|
("type", Some(event.event_type().to_string().into())),
|
||||||
});
|
("unsigned", event.unsigned().map(Into::into)),
|
||||||
|
];
|
||||||
|
|
||||||
if let Some(unsigned) = event.unsigned() {
|
to_raw_value(&JsonMembers(&members))
|
||||||
json["unsigned"] = json!(unsigned);
|
.map(Self::from_json)
|
||||||
}
|
.expect("Failed to serialize Event value")
|
||||||
|
|
||||||
serde_json::from_value(json).expect("Failed to serialize Event value")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user