Move from_raw_json_value to ruma-serde
… and remove unnecessary copies of it.
This commit is contained in:
parent
c5550bdbc8
commit
39041286b9
@ -1,8 +1,7 @@
|
|||||||
|
use ruma_serde::from_raw_json_value;
|
||||||
use serde::{de, Deserialize};
|
use serde::{de, Deserialize};
|
||||||
use serde_json::value::RawValue as RawJsonValue;
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
|
|
||||||
use ruma_events::from_raw_json_value;
|
|
||||||
|
|
||||||
use super::LoginType;
|
use super::LoginType;
|
||||||
|
|
||||||
/// Helper struct to determine the type from a `serde_json::value::RawValue`
|
/// Helper struct to determine the type from a `serde_json::value::RawValue`
|
||||||
|
@ -11,7 +11,7 @@ use ruma_api::{
|
|||||||
};
|
};
|
||||||
use ruma_common::thirdparty::Medium;
|
use ruma_common::thirdparty::Medium;
|
||||||
use ruma_identifiers::{ClientSecret, SessionId, TransactionId};
|
use ruma_identifiers::{ClientSecret, SessionId, TransactionId};
|
||||||
use ruma_serde::{JsonObject, Outgoing, StringEnum};
|
use ruma_serde::{from_raw_json_value, JsonObject, Outgoing, StringEnum};
|
||||||
use serde::{
|
use serde::{
|
||||||
de::{self, DeserializeOwned},
|
de::{self, DeserializeOwned},
|
||||||
Deserialize, Deserializer, Serialize,
|
Deserialize, Deserializer, Serialize,
|
||||||
@ -307,12 +307,6 @@ impl<'de> Deserialize<'de> for IncomingAuthData {
|
|||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
fn from_raw_json_value<T: DeserializeOwned, E: de::Error>(
|
|
||||||
raw: &RawJsonValue,
|
|
||||||
) -> Result<T, E> {
|
|
||||||
serde_json::from_str(raw.get()).map_err(E::custom)
|
|
||||||
}
|
|
||||||
|
|
||||||
let json = Box::<RawJsonValue>::deserialize(deserializer)?;
|
let json = Box::<RawJsonValue>::deserialize(deserializer)?;
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
|
@ -105,6 +105,7 @@ fn expand_deserialize_impl(
|
|||||||
variants: &[EventEnumVariant],
|
variants: &[EventEnumVariant],
|
||||||
ruma_events: &TokenStream,
|
ruma_events: &TokenStream,
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
|
let ruma_serde = quote! { #ruma_events::exports::ruma_serde };
|
||||||
let serde = quote! { #ruma_events::exports::serde };
|
let serde = quote! { #ruma_events::exports::serde };
|
||||||
let serde_json = quote! { #ruma_events::exports::serde_json };
|
let serde_json = quote! { #ruma_events::exports::serde_json };
|
||||||
|
|
||||||
@ -127,7 +128,7 @@ fn expand_deserialize_impl(
|
|||||||
|
|
||||||
let json = Box::<#serde_json::value::RawValue>::deserialize(deserializer)?;
|
let json = Box::<#serde_json::value::RawValue>::deserialize(deserializer)?;
|
||||||
let #ruma_events::EventTypeDeHelper { ev_type, .. } =
|
let #ruma_events::EventTypeDeHelper { ev_type, .. } =
|
||||||
#ruma_events::from_raw_json_value(&json)?;
|
#ruma_serde::from_raw_json_value(&json)?;
|
||||||
|
|
||||||
match &*ev_type {
|
match &*ev_type {
|
||||||
#(
|
#(
|
||||||
@ -366,6 +367,7 @@ fn expand_possibly_redacted_enum(
|
|||||||
var: EventKindVariation,
|
var: EventKindVariation,
|
||||||
ruma_events: &TokenStream,
|
ruma_events: &TokenStream,
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
|
let ruma_serde = quote! { #ruma_events::exports::ruma_serde };
|
||||||
let serde = quote! { #ruma_events::exports::serde };
|
let serde = quote! { #ruma_events::exports::serde };
|
||||||
let serde_json = quote! { #ruma_events::exports::serde_json };
|
let serde_json = quote! { #ruma_events::exports::serde_json };
|
||||||
|
|
||||||
@ -393,13 +395,13 @@ fn expand_possibly_redacted_enum(
|
|||||||
{
|
{
|
||||||
let json = Box::<#serde_json::value::RawValue>::deserialize(deserializer)?;
|
let json = Box::<#serde_json::value::RawValue>::deserialize(deserializer)?;
|
||||||
let #ruma_events::RedactionDeHelper { unsigned } =
|
let #ruma_events::RedactionDeHelper { unsigned } =
|
||||||
#ruma_events::from_raw_json_value(&json)?;
|
#ruma_serde::from_raw_json_value(&json)?;
|
||||||
|
|
||||||
Ok(match unsigned {
|
Ok(match unsigned {
|
||||||
Some(unsigned) if unsigned.redacted_because.is_some() => {
|
Some(unsigned) if unsigned.redacted_because.is_some() => {
|
||||||
Self::Redacted(#ruma_events::from_raw_json_value(&json)?)
|
Self::Redacted(#ruma_serde::from_raw_json_value(&json)?)
|
||||||
}
|
}
|
||||||
_ => Self::Regular(#ruma_events::from_raw_json_value(&json)?),
|
_ => Self::Regular(#ruma_serde::from_raw_json_value(&json)?),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
use ruma_common::MilliSecondsSinceUnixEpoch;
|
use ruma_common::MilliSecondsSinceUnixEpoch;
|
||||||
use ruma_events_macros::{event_enum, EventEnumFromEvent};
|
use ruma_events_macros::{event_enum, EventEnumFromEvent};
|
||||||
use ruma_identifiers::{EventId, RoomId, RoomVersionId, UserId};
|
use ruma_identifiers::{EventId, RoomId, RoomVersionId, UserId};
|
||||||
|
use ruma_serde::from_raw_json_value;
|
||||||
use serde::{de, Deserialize, Serialize};
|
use serde::{de, Deserialize, Serialize};
|
||||||
use serde_json::value::RawValue as RawJsonValue;
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
from_raw_json_value, key,
|
key,
|
||||||
room::{encrypted, message, redaction::SyncRoomRedactionEvent},
|
room::{encrypted, message, redaction::SyncRoomRedactionEvent},
|
||||||
Redact, UnsignedDeHelper,
|
Redact, UnsignedDeHelper,
|
||||||
};
|
};
|
||||||
|
@ -119,10 +119,7 @@ use std::fmt::Debug;
|
|||||||
|
|
||||||
use ruma_identifiers::{EventEncryptionAlgorithm, RoomVersionId};
|
use ruma_identifiers::{EventEncryptionAlgorithm, RoomVersionId};
|
||||||
use ruma_serde::Raw;
|
use ruma_serde::Raw;
|
||||||
use serde::{
|
use serde::{de::IgnoredAny, Deserialize, Serialize, Serializer};
|
||||||
de::{self, IgnoredAny},
|
|
||||||
Deserialize, Serialize, Serializer,
|
|
||||||
};
|
|
||||||
use serde_json::value::RawValue as RawJsonValue;
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
|
|
||||||
use self::room::redaction::SyncRoomRedactionEvent;
|
use self::room::redaction::SyncRoomRedactionEvent;
|
||||||
@ -389,16 +386,6 @@ pub struct UnsignedDeHelper {
|
|||||||
pub redacted_because: Option<IgnoredAny>,
|
pub redacted_because: Option<IgnoredAny>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Helper function for `serde_json::value::RawValue` deserialization.
|
|
||||||
#[doc(hidden)]
|
|
||||||
pub fn from_raw_json_value<'a, T, E>(val: &'a RawJsonValue) -> Result<T, E>
|
|
||||||
where
|
|
||||||
T: Deserialize<'a>,
|
|
||||||
E: de::Error,
|
|
||||||
{
|
|
||||||
serde_json::from_str(val.get()).map_err(E::custom)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wrapper around `Box<str>` that cannot be used in a meaningful way outside of
|
// Wrapper around `Box<str>` that cannot be used in a meaningful way outside of
|
||||||
// this crate. Used for string enums because their `_Custom` variant can't be
|
// this crate. Used for string enums because their `_Custom` variant can't be
|
||||||
// truly private (only `#[doc(hidden)]`).
|
// truly private (only `#[doc(hidden)]`).
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
use ruma_events_macros::EventContent;
|
use ruma_events_macros::EventContent;
|
||||||
#[cfg(feature = "unstable-spec")]
|
#[cfg(feature = "unstable-spec")]
|
||||||
use ruma_identifiers::RoomId;
|
use ruma_identifiers::RoomId;
|
||||||
#[cfg(feature = "unstable-spec")]
|
use ruma_serde::from_raw_json_value;
|
||||||
use serde::de::DeserializeOwned;
|
|
||||||
use serde::{
|
use serde::{
|
||||||
de::{Deserializer, Error},
|
de::{Deserializer, Error},
|
||||||
Deserialize, Serialize,
|
Deserialize, Serialize,
|
||||||
@ -113,11 +112,6 @@ impl<'de> Deserialize<'de> for JoinRule {
|
|||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
#[cfg(feature = "unstable-spec")]
|
|
||||||
fn from_raw_json_value<T: DeserializeOwned, E: Error>(raw: &RawJsonValue) -> Result<T, E> {
|
|
||||||
serde_json::from_str(raw.get()).map_err(E::custom)
|
|
||||||
}
|
|
||||||
|
|
||||||
let json: Box<RawJsonValue> = Box::deserialize(deserializer)?;
|
let json: Box<RawJsonValue> = Box::deserialize(deserializer)?;
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
@ -215,10 +209,6 @@ impl<'de> Deserialize<'de> for AllowRule {
|
|||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
fn from_raw_json_value<T: DeserializeOwned, E: Error>(raw: &RawJsonValue) -> Result<T, E> {
|
|
||||||
serde_json::from_str(raw.get()).map_err(E::custom)
|
|
||||||
}
|
|
||||||
|
|
||||||
let json: Box<RawJsonValue> = Box::deserialize(deserializer)?;
|
let json: Box<RawJsonValue> = Box::deserialize(deserializer)?;
|
||||||
|
|
||||||
// Extracts the `type` value.
|
// Extracts the `type` value.
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
//! `Deserialize` implementation for RoomMessageEventContent and MessageType.
|
//! `Deserialize` implementation for RoomMessageEventContent and MessageType.
|
||||||
|
|
||||||
|
use ruma_serde::from_raw_json_value;
|
||||||
use serde::{de, Deserialize};
|
use serde::{de, Deserialize};
|
||||||
use serde_json::value::RawValue as RawJsonValue;
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
|
|
||||||
use super::{MessageType, Relation, RoomMessageEventContent};
|
use super::{MessageType, Relation, RoomMessageEventContent};
|
||||||
use crate::from_raw_json_value;
|
|
||||||
|
|
||||||
impl<'de> Deserialize<'de> for RoomMessageEventContent {
|
impl<'de> Deserialize<'de> for RoomMessageEventContent {
|
||||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||||
|
@ -6,9 +6,9 @@ use js_int::UInt;
|
|||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
encryption::DeviceKeys, presence::PresenceState, to_device::DeviceIdOrAllDevices,
|
encryption::DeviceKeys, presence::PresenceState, to_device::DeviceIdOrAllDevices,
|
||||||
};
|
};
|
||||||
use ruma_events::{from_raw_json_value, receipt::Receipt, AnyToDeviceEventContent, EventType};
|
use ruma_events::{receipt::Receipt, AnyToDeviceEventContent, EventType};
|
||||||
use ruma_identifiers::{DeviceId, EventId, RoomId, TransactionId, UserId};
|
use ruma_identifiers::{DeviceId, EventId, RoomId, TransactionId, UserId};
|
||||||
use ruma_serde::Raw;
|
use ruma_serde::{from_raw_json_value, Raw};
|
||||||
use serde::{de, Deserialize, Serialize};
|
use serde::{de, Deserialize, Serialize};
|
||||||
use serde_json::{value::RawValue as RawJsonValue, Value as JsonValue};
|
use serde_json::{value::RawValue as RawJsonValue, Value as JsonValue};
|
||||||
|
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
#![warn(missing_docs)]
|
#![warn(missing_docs)]
|
||||||
|
|
||||||
use serde_json::Value as JsonValue;
|
use serde::{de, Deserialize};
|
||||||
|
use serde_json::{value::RawValue as RawJsonValue, Value as JsonValue};
|
||||||
|
|
||||||
pub mod base64;
|
pub mod base64;
|
||||||
mod buf;
|
mod buf;
|
||||||
@ -61,6 +62,15 @@ pub fn is_true(b: &bool) -> bool {
|
|||||||
*b
|
*b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Helper function for `serde_json::value::RawValue` deserialization.
|
||||||
|
pub fn from_raw_json_value<'a, T, E>(val: &'a RawJsonValue) -> Result<T, E>
|
||||||
|
where
|
||||||
|
T: Deserialize<'a>,
|
||||||
|
E: de::Error,
|
||||||
|
{
|
||||||
|
serde_json::from_str(val.get()).map_err(E::custom)
|
||||||
|
}
|
||||||
|
|
||||||
/// A type that can be sent to another party that understands the matrix protocol.
|
/// A type that can be sent to another party that understands the matrix protocol.
|
||||||
///
|
///
|
||||||
/// If any of the fields of `Self` don't implement serde's `Deserialize`, you can derive this trait
|
/// If any of the fields of `Self` don't implement serde's `Deserialize`, you can derive this trait
|
||||||
|
Loading…
x
Reference in New Issue
Block a user