Files
continuwuity/src/core/matrix/pdu/strip.rs
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

258 lines
6.1 KiB
Rust
Raw Normal View History

2024-10-25 01:16:01 +00:00
use ruma::{
events::{
2025-04-22 09:33:17 +00:00
AnyMessageLikeEvent, AnyStateEvent, AnyStrippedStateEvent, AnySyncStateEvent,
AnySyncTimelineEvent, AnyTimelineEvent, StateEvent, room::member::RoomMemberEventContent,
space::child::HierarchySpaceChildEvent,
2024-10-25 01:16:01 +00:00
},
serde::Raw,
};
use serde_json::{json, value::Value as JsonValue};
use crate::implement;
2024-10-25 01:16:01 +00:00
2025-03-30 21:19:47 +00:00
#[implement(super::Pdu)]
#[must_use]
2025-03-30 21:19:47 +00:00
#[inline]
pub fn into_room_event(self) -> Raw<AnyTimelineEvent> { self.to_room_event() }
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
pub fn to_room_event(&self) -> Raw<AnyTimelineEvent> {
2025-04-22 09:33:17 +00:00
let value = self.to_room_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2025-03-30 21:19:47 +00:00
}
#[implement(super::Pdu)]
#[must_use]
#[inline]
pub fn to_room_event_value(&self) -> JsonValue {
2024-10-25 01:16:01 +00:00
let (redacts, content) = self.copy_redacts();
let mut json = json!({
"content": content,
"type": self.kind,
"event_id": self.event_id,
"sender": self.sender,
"origin_server_ts": self.origin_server_ts,
"room_id": self.room_id,
});
if let Some(unsigned) = &self.unsigned {
json["unsigned"] = json!(unsigned);
}
if let Some(state_key) = &self.state_key {
json["state_key"] = json!(state_key);
}
if let Some(redacts) = &redacts {
json["redacts"] = json!(redacts);
}
2025-03-30 21:19:47 +00:00
json
2024-10-25 01:16:01 +00:00
}
2025-03-30 21:19:47 +00:00
#[implement(super::Pdu)]
#[must_use]
2025-03-30 21:19:47 +00:00
#[inline]
pub fn into_message_like_event(self) -> Raw<AnyMessageLikeEvent> { self.to_message_like_event() }
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
pub fn to_message_like_event(&self) -> Raw<AnyMessageLikeEvent> {
2025-04-22 09:33:17 +00:00
let value = self.to_message_like_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2025-03-30 21:19:47 +00:00
}
#[implement(super::Pdu)]
#[must_use]
#[inline]
pub fn to_message_like_event_value(&self) -> JsonValue {
2024-10-25 01:16:01 +00:00
let (redacts, content) = self.copy_redacts();
let mut json = json!({
"content": content,
"type": self.kind,
"event_id": self.event_id,
"sender": self.sender,
"origin_server_ts": self.origin_server_ts,
"room_id": self.room_id,
});
if let Some(unsigned) = &self.unsigned {
json["unsigned"] = json!(unsigned);
}
if let Some(state_key) = &self.state_key {
json["state_key"] = json!(state_key);
}
if let Some(redacts) = &redacts {
json["redacts"] = json!(redacts);
}
2025-03-30 21:19:47 +00:00
json
2024-10-25 01:16:01 +00:00
}
2025-03-30 21:19:47 +00:00
#[implement(super::Pdu)]
#[must_use]
2025-03-30 21:19:47 +00:00
#[inline]
pub fn into_sync_room_event(self) -> Raw<AnySyncTimelineEvent> { self.to_sync_room_event() }
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
pub fn to_sync_room_event(&self) -> Raw<AnySyncTimelineEvent> {
2025-04-22 09:33:17 +00:00
let value = self.to_sync_room_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2025-03-30 21:19:47 +00:00
}
#[implement(super::Pdu)]
#[must_use]
#[inline]
pub fn to_sync_room_event_value(&self) -> JsonValue {
2024-10-25 01:16:01 +00:00
let (redacts, content) = self.copy_redacts();
let mut json = json!({
"content": content,
"type": self.kind,
"event_id": self.event_id,
"sender": self.sender,
"origin_server_ts": self.origin_server_ts,
});
if let Some(unsigned) = &self.unsigned {
json["unsigned"] = json!(unsigned);
}
if let Some(state_key) = &self.state_key {
json["state_key"] = json!(state_key);
}
if let Some(redacts) = &redacts {
json["redacts"] = json!(redacts);
}
2025-03-30 21:19:47 +00:00
json
2024-10-25 01:16:01 +00:00
}
2025-03-30 21:19:47 +00:00
#[implement(super::Pdu)]
2024-10-25 01:16:01 +00:00
#[must_use]
2025-03-30 21:19:47 +00:00
pub fn into_state_event(self) -> Raw<AnyStateEvent> {
2025-04-22 09:33:17 +00:00
let value = self.into_state_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2025-03-30 21:19:47 +00:00
}
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
#[inline]
2025-01-29 01:04:02 +00:00
pub fn into_state_event_value(self) -> JsonValue {
2024-10-25 01:16:01 +00:00
let mut json = json!({
"content": self.content,
"type": self.kind,
"event_id": self.event_id,
"sender": self.sender,
"origin_server_ts": self.origin_server_ts,
"room_id": self.room_id,
"state_key": self.state_key,
});
2025-01-29 01:04:02 +00:00
if let Some(unsigned) = self.unsigned {
2024-10-25 01:16:01 +00:00
json["unsigned"] = json!(unsigned);
}
json
}
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
pub fn into_sync_state_event(self) -> Raw<AnySyncStateEvent> {
2025-04-22 09:33:17 +00:00
let value = self.into_sync_state_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2024-10-25 01:16:01 +00:00
}
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
#[inline]
pub fn into_sync_state_event_value(self) -> JsonValue {
2024-10-25 01:16:01 +00:00
let mut json = json!({
"content": self.content,
"type": self.kind,
"event_id": self.event_id,
"sender": self.sender,
"origin_server_ts": self.origin_server_ts,
"state_key": self.state_key,
});
if let Some(unsigned) = &self.unsigned {
json["unsigned"] = json!(unsigned);
}
2025-03-30 21:19:47 +00:00
json
2024-10-25 01:16:01 +00:00
}
2025-03-30 21:19:47 +00:00
#[implement(super::Pdu)]
#[must_use]
2025-03-30 21:19:47 +00:00
#[inline]
pub fn into_stripped_state_event(self) -> Raw<AnyStrippedStateEvent> {
self.to_stripped_state_event()
}
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
2024-10-25 01:16:01 +00:00
pub fn to_stripped_state_event(&self) -> Raw<AnyStrippedStateEvent> {
2025-04-22 09:33:17 +00:00
let value = self.to_stripped_state_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2025-03-30 21:19:47 +00:00
}
#[implement(super::Pdu)]
#[must_use]
#[inline]
pub fn to_stripped_state_event_value(&self) -> JsonValue {
json!({
2024-10-25 01:16:01 +00:00
"content": self.content,
"type": self.kind,
"sender": self.sender,
"state_key": self.state_key,
2025-03-30 21:19:47 +00:00
})
2024-10-25 01:16:01 +00:00
}
2025-03-30 21:19:47 +00:00
#[implement(super::Pdu)]
#[must_use]
2025-03-30 21:19:47 +00:00
pub fn into_stripped_spacechild_state_event(self) -> Raw<HierarchySpaceChildEvent> {
2025-04-22 09:33:17 +00:00
let value = self.into_stripped_spacechild_state_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2025-03-30 21:19:47 +00:00
}
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
#[inline]
pub fn into_stripped_spacechild_state_event_value(self) -> JsonValue {
json!({
2024-10-25 01:16:01 +00:00
"content": self.content,
"type": self.kind,
"sender": self.sender,
"state_key": self.state_key,
"origin_server_ts": self.origin_server_ts,
2025-03-30 21:19:47 +00:00
})
2024-10-25 01:16:01 +00:00
}
2024-11-07 03:30:47 +00:00
#[implement(super::Pdu)]
2025-03-30 21:19:47 +00:00
#[must_use]
2025-01-29 01:04:02 +00:00
pub fn into_member_event(self) -> Raw<StateEvent<RoomMemberEventContent>> {
2025-04-22 09:33:17 +00:00
let value = self.into_member_event_value();
serde_json::from_value(value).expect("Failed to serialize Event value")
2025-03-30 21:19:47 +00:00
}
#[implement(super::Pdu)]
#[must_use]
#[inline]
pub fn into_member_event_value(self) -> JsonValue {
2024-10-25 01:16:01 +00:00
let mut json = json!({
"content": self.content,
"type": self.kind,
"event_id": self.event_id,
"sender": self.sender,
"origin_server_ts": self.origin_server_ts,
"redacts": self.redacts,
"room_id": self.room_id,
"state_key": self.state_key,
});
2025-01-29 01:04:02 +00:00
if let Some(unsigned) = self.unsigned {
2024-10-25 01:16:01 +00:00
json["unsigned"] = json!(unsigned);
}
2025-03-30 21:19:47 +00:00
json
2024-10-25 01:16:01 +00:00
}