Run rustfmt.
This commit is contained in:
		
							parent
							
								
									601f00e820
								
							
						
					
					
						commit
						3acc5c3a93
					
				| @ -1,7 +1,6 @@ | ||||
| //! Enums for heterogeneous collections of events, inclusive for every event type that implements
 | ||||
| //! the trait of the same name.
 | ||||
| 
 | ||||
| use {CustomEvent, CustomRoomEvent, CustomStateEvent, EventType}; | ||||
| use call::answer::AnswerEvent; | ||||
| use call::candidates::CandidatesEvent; | ||||
| use call::hangup::HangupEvent; | ||||
| @ -26,10 +25,11 @@ use room::third_party_invite::ThirdPartyInviteEvent; | ||||
| use room::topic::TopicEvent; | ||||
| use tag::TagEvent; | ||||
| use typing::TypingEvent; | ||||
| use {CustomEvent, CustomRoomEvent, CustomStateEvent, EventType}; | ||||
| 
 | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::de::Error; | ||||
| use serde_json::{Value, from_value}; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| /// A basic event, room event, or state event.
 | ||||
| #[derive(Clone, Debug)] | ||||
| @ -171,7 +171,10 @@ pub enum StateEvent { | ||||
| } | ||||
| 
 | ||||
| impl Serialize for Event { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         match *self { | ||||
|             Event::CallAnswer(ref event) => event.serialize(serializer), | ||||
|             Event::CallCandidates(ref event) => event.serialize(serializer), | ||||
| @ -205,7 +208,10 @@ impl Serialize for Event { | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for Event { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         let value: Value = Deserialize::deserialize(deserializer)?; | ||||
| 
 | ||||
|         let event_type_value = match value.get("type") { | ||||
| @ -419,8 +425,9 @@ impl<'de> Deserialize<'de> for Event { | ||||
|                     }; | ||||
| 
 | ||||
|                     Ok(Event::CustomState(event)) | ||||
|                 } else if value.get("event_id").is_some() && value.get("room_id").is_some() && | ||||
|                     value.get("sender").is_some() { | ||||
|                 } else if value.get("event_id").is_some() && value.get("room_id").is_some() | ||||
|                     && value.get("sender").is_some() | ||||
|                 { | ||||
|                     let event = match from_value::<CustomRoomEvent>(value) { | ||||
|                         Ok(event) => event, | ||||
|                         Err(error) => return Err(D::Error::custom(error.to_string())), | ||||
| @ -441,7 +448,10 @@ impl<'de> Deserialize<'de> for Event { | ||||
| } | ||||
| 
 | ||||
| impl Serialize for RoomEvent { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         match *self { | ||||
|             RoomEvent::CallAnswer(ref event) => event.serialize(serializer), | ||||
|             RoomEvent::CallCandidates(ref event) => event.serialize(serializer), | ||||
| @ -469,7 +479,10 @@ impl Serialize for RoomEvent { | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for RoomEvent { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         let value: Value = Deserialize::deserialize(deserializer)?; | ||||
| 
 | ||||
|         let event_type_value = match value.get("type") { | ||||
| @ -652,11 +665,11 @@ impl<'de> Deserialize<'de> for RoomEvent { | ||||
|                     Ok(RoomEvent::CustomRoom(event)) | ||||
|                 } | ||||
|             } | ||||
|             EventType::Direct | | ||||
|             EventType::Presence | | ||||
|             EventType::Receipt | | ||||
|             EventType::Tag | | ||||
|             EventType::Typing => { | ||||
|             EventType::Direct | ||||
|             | EventType::Presence | ||||
|             | EventType::Receipt | ||||
|             | EventType::Tag | ||||
|             | EventType::Typing => { | ||||
|                 return Err(D::Error::custom("not a room event".to_string())); | ||||
|             } | ||||
|         } | ||||
| @ -664,7 +677,10 @@ impl<'de> Deserialize<'de> for RoomEvent { | ||||
| } | ||||
| 
 | ||||
| impl Serialize for StateEvent { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         match *self { | ||||
|             StateEvent::RoomAliases(ref event) => event.serialize(serializer), | ||||
|             StateEvent::RoomAvatar(ref event) => event.serialize(serializer), | ||||
| @ -685,7 +701,10 @@ impl Serialize for StateEvent { | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for StateEvent { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         let value: Value = Deserialize::deserialize(deserializer)?; | ||||
| 
 | ||||
|         let event_type_value = match value.get("type") { | ||||
| @ -811,17 +830,17 @@ impl<'de> Deserialize<'de> for StateEvent { | ||||
| 
 | ||||
|                 Ok(StateEvent::CustomState(event)) | ||||
|             } | ||||
|             EventType::CallAnswer | | ||||
|             EventType::CallCandidates | | ||||
|             EventType::CallHangup | | ||||
|             EventType::CallInvite | | ||||
|             EventType::Direct | | ||||
|             EventType::Presence | | ||||
|             EventType::Receipt | | ||||
|             EventType::RoomMessage | | ||||
|             EventType::RoomRedaction | | ||||
|             EventType::Tag | | ||||
|             EventType::Typing => { | ||||
|             EventType::CallAnswer | ||||
|             | EventType::CallCandidates | ||||
|             | EventType::CallHangup | ||||
|             | EventType::CallInvite | ||||
|             | EventType::Direct | ||||
|             | EventType::Presence | ||||
|             | EventType::Receipt | ||||
|             | EventType::RoomMessage | ||||
|             | EventType::RoomRedaction | ||||
|             | EventType::Tag | ||||
|             | EventType::Typing => { | ||||
|                 return Err(D::Error::custom("not a state event".to_string())); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| //! Enums for heterogeneous collections of events, exclusive to event types that implement "at
 | ||||
| //! most" the trait of the same name.
 | ||||
| 
 | ||||
| use {CustomEvent, CustomRoomEvent, EventType}; | ||||
| use call::answer::AnswerEvent; | ||||
| use call::candidates::CandidatesEvent; | ||||
| use call::hangup::HangupEvent; | ||||
| @ -13,10 +12,11 @@ use room::message::MessageEvent; | ||||
| use room::redaction::RedactionEvent; | ||||
| use tag::TagEvent; | ||||
| use typing::TypingEvent; | ||||
| use {CustomEvent, CustomRoomEvent, EventType}; | ||||
| 
 | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::de::Error; | ||||
| use serde_json::{Value, from_value}; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| pub use super::all::StateEvent; | ||||
| 
 | ||||
| @ -57,7 +57,10 @@ pub enum RoomEvent { | ||||
| } | ||||
| 
 | ||||
| impl Serialize for Event { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         match *self { | ||||
|             Event::Direct(ref event) => event.serialize(serializer), | ||||
|             Event::Presence(ref event) => event.serialize(serializer), | ||||
| @ -70,7 +73,10 @@ impl Serialize for Event { | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for Event { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         let value: Value = Deserialize::deserialize(deserializer)?; | ||||
| 
 | ||||
|         let event_type_value = match value.get("type") { | ||||
| @ -132,21 +138,38 @@ impl<'de> Deserialize<'de> for Event { | ||||
| 
 | ||||
|                 Ok(Event::Custom(event)) | ||||
|             } | ||||
|             EventType::CallAnswer | EventType::CallCandidates | EventType::CallHangup | | ||||
|             EventType::CallInvite | EventType::RoomAliases | EventType::RoomAvatar | | ||||
|             EventType::RoomCanonicalAlias | EventType::RoomCreate | EventType::RoomGuestAccess | | ||||
|             EventType::RoomHistoryVisibility | EventType::RoomJoinRules | EventType::RoomMember | | ||||
|             EventType::RoomMessage | EventType::RoomName | EventType::RoomPinnedEvents | | ||||
|             EventType::RoomPowerLevels | EventType::RoomRedaction | EventType::RoomThirdPartyInvite | | ||||
|             EventType::RoomTopic => { | ||||
|                 return Err(D::Error::custom("not exclusively a basic event".to_string())); | ||||
|             EventType::CallAnswer | ||||
|             | EventType::CallCandidates | ||||
|             | EventType::CallHangup | ||||
|             | EventType::CallInvite | ||||
|             | EventType::RoomAliases | ||||
|             | EventType::RoomAvatar | ||||
|             | EventType::RoomCanonicalAlias | ||||
|             | EventType::RoomCreate | ||||
|             | EventType::RoomGuestAccess | ||||
|             | EventType::RoomHistoryVisibility | ||||
|             | EventType::RoomJoinRules | ||||
|             | EventType::RoomMember | ||||
|             | EventType::RoomMessage | ||||
|             | EventType::RoomName | ||||
|             | EventType::RoomPinnedEvents | ||||
|             | EventType::RoomPowerLevels | ||||
|             | EventType::RoomRedaction | ||||
|             | EventType::RoomThirdPartyInvite | ||||
|             | EventType::RoomTopic => { | ||||
|                 return Err(D::Error::custom( | ||||
|                     "not exclusively a basic event".to_string(), | ||||
|                 )); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl Serialize for RoomEvent { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         match *self { | ||||
|             RoomEvent::CallAnswer(ref event) => event.serialize(serializer), | ||||
|             RoomEvent::CallCandidates(ref event) => event.serialize(serializer), | ||||
| @ -160,7 +183,10 @@ impl Serialize for RoomEvent { | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for RoomEvent { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         let value: Value = Deserialize::deserialize(deserializer)?; | ||||
| 
 | ||||
|         let event_type_value = match value.get("type") { | ||||
| @ -230,24 +256,24 @@ impl<'de> Deserialize<'de> for RoomEvent { | ||||
| 
 | ||||
|                 Ok(RoomEvent::CustomRoom(event)) | ||||
|             } | ||||
|             EventType::Direct | | ||||
|             EventType::Presence | | ||||
|             EventType::Receipt | | ||||
|             EventType::RoomAliases | | ||||
|             EventType::RoomAvatar | | ||||
|             EventType::RoomCanonicalAlias | | ||||
|             EventType::RoomCreate | | ||||
|             EventType::RoomGuestAccess | | ||||
|             EventType::RoomHistoryVisibility | | ||||
|             EventType::RoomJoinRules | | ||||
|             EventType::RoomMember | | ||||
|             EventType::RoomName | | ||||
|             EventType::RoomPinnedEvents | | ||||
|             EventType::RoomPowerLevels | | ||||
|             EventType::RoomThirdPartyInvite | | ||||
|             EventType::RoomTopic | | ||||
|             EventType::Tag | | ||||
|             EventType::Typing => { | ||||
|             EventType::Direct | ||||
|             | EventType::Presence | ||||
|             | EventType::Receipt | ||||
|             | EventType::RoomAliases | ||||
|             | EventType::RoomAvatar | ||||
|             | EventType::RoomCanonicalAlias | ||||
|             | EventType::RoomCreate | ||||
|             | EventType::RoomGuestAccess | ||||
|             | EventType::RoomHistoryVisibility | ||||
|             | EventType::RoomJoinRules | ||||
|             | EventType::RoomMember | ||||
|             | EventType::RoomName | ||||
|             | EventType::RoomPinnedEvents | ||||
|             | EventType::RoomPowerLevels | ||||
|             | EventType::RoomThirdPartyInvite | ||||
|             | EventType::RoomTopic | ||||
|             | EventType::Tag | ||||
|             | EventType::Typing => { | ||||
|                 return Err(D::Error::custom("not exclusively a room event".to_string())); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| 
 | ||||
| use std::collections::HashMap; | ||||
| 
 | ||||
| use ruma_identifiers::{UserId, RoomId}; | ||||
| use ruma_identifiers::{RoomId, UserId}; | ||||
| 
 | ||||
| event! { | ||||
|     /// Informs the client about the rooms that are considered direct by a user.
 | ||||
| @ -19,12 +19,12 @@ pub type DirectEventContent = HashMap<UserId, Vec<RoomId>>; | ||||
| mod tests { | ||||
|     use std::collections::HashMap; | ||||
| 
 | ||||
|     use ruma_identifiers::{UserId, RoomId}; | ||||
|     use ruma_identifiers::{RoomId, UserId}; | ||||
|     use serde_json::{from_str, to_string}; | ||||
| 
 | ||||
|     use super::super::EventType; | ||||
|     use collections; | ||||
|     use direct::{DirectEvent, DirectEventContent}; | ||||
|     use super::super::EventType; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn serialization() { | ||||
| @ -43,7 +43,8 @@ mod tests { | ||||
|             to_string(&event).unwrap(), | ||||
|             format!( | ||||
|                 r#"{{"content":{{"{}":["{}"]}},"type":"m.direct"}}"#, | ||||
|                 alice.to_string(), room[0].to_string() | ||||
|                 alice.to_string(), | ||||
|                 room[0].to_string() | ||||
|             ) | ||||
|         ); | ||||
|     } | ||||
| @ -53,13 +54,18 @@ mod tests { | ||||
|         let alice = UserId::new("ruma.io").unwrap(); | ||||
|         let rooms = vec![ | ||||
|             RoomId::new("ruma.io").unwrap(), | ||||
|             RoomId::new("ruma.io").unwrap() | ||||
|             RoomId::new("ruma.io").unwrap(), | ||||
|         ]; | ||||
| 
 | ||||
|         let json_data = format!(r#"{{
 | ||||
|         let json_data = format!( | ||||
|             r#"{{
 | ||||
|             "content": {{ "{}": ["{}", "{}"] }}, | ||||
|             "type": "m.direct" | ||||
|         }}"#, alice.to_string(), rooms[0].to_string(), rooms[1].to_string());
 | ||||
|         }}"#,
 | ||||
|             alice.to_string(), | ||||
|             rooms[0].to_string(), | ||||
|             rooms[1].to_string() | ||||
|         ); | ||||
| 
 | ||||
|         let event = from_str::<DirectEvent>(&json_data).unwrap(); | ||||
|         assert_eq!(event.event_type, EventType::Direct); | ||||
| @ -75,8 +81,8 @@ mod tests { | ||||
|                 let direct_rooms = event.content.get(&alice).unwrap(); | ||||
|                 assert!(direct_rooms.contains(&rooms[0])); | ||||
|                 assert!(direct_rooms.contains(&rooms[1])); | ||||
|             }, | ||||
|             _ => assert!(false) | ||||
|             } | ||||
|             _ => assert!(false), | ||||
|         }; | ||||
| 
 | ||||
|         match from_str::<collections::only::Event>(&json_data).unwrap() { | ||||
| @ -86,8 +92,8 @@ mod tests { | ||||
|                 let direct_rooms = event.content.get(&alice).unwrap(); | ||||
|                 assert!(direct_rooms.contains(&rooms[0])); | ||||
|                 assert!(direct_rooms.contains(&rooms[1])); | ||||
|             }, | ||||
|             _ => assert!(false) | ||||
|             } | ||||
|             _ => assert!(false), | ||||
|         }; | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										30
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -102,17 +102,19 @@ | ||||
| extern crate ruma_identifiers; | ||||
| extern crate ruma_signatures; | ||||
| extern crate serde; | ||||
| #[macro_use] extern crate serde_derive; | ||||
| #[macro_use] | ||||
| extern crate serde_derive; | ||||
| extern crate serde_json; | ||||
| 
 | ||||
| use std::fmt::{Debug, Display, Formatter, Error as FmtError, Result as FmtResult}; | ||||
| use std::fmt::{Debug, Display, Error as FmtError, Formatter, Result as FmtResult}; | ||||
| 
 | ||||
| use ruma_identifiers::{EventId, RoomId, UserId}; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::de::{Error as SerdeError, Visitor}; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_json::Value; | ||||
| 
 | ||||
| #[macro_use] mod macros; | ||||
| #[macro_use] | ||||
| mod macros; | ||||
| 
 | ||||
| pub mod call; | ||||
| /// Enums for heterogeneous collections of events.
 | ||||
| @ -188,7 +190,10 @@ pub enum EventType { | ||||
| } | ||||
| 
 | ||||
| /// A basic event.
 | ||||
| pub trait Event where Self: Debug + for<'a> Deserialize<'a> + Serialize { | ||||
| pub trait Event | ||||
| where | ||||
|     Self: Debug + for<'a> Deserialize<'a> + Serialize, | ||||
| { | ||||
|     /// The event-type-specific payload this event carries.
 | ||||
|     type Content: Debug + for<'a> Deserialize<'a> + Serialize; | ||||
| 
 | ||||
| @ -308,13 +313,19 @@ impl<'a> From<&'a str> for EventType { | ||||
| } | ||||
| 
 | ||||
| impl Serialize for EventType { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         serializer.serialize_str(&self.to_string()) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for EventType { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         struct EventTypeVisitor; | ||||
| 
 | ||||
|         impl<'de> Visitor<'de> for EventTypeVisitor { | ||||
| @ -324,7 +335,10 @@ impl<'de> Deserialize<'de> for EventType { | ||||
|                 write!(formatter, "a Matrix event type as a string") | ||||
|             } | ||||
| 
 | ||||
|             fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: SerdeError { | ||||
|             fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> | ||||
|             where | ||||
|                 E: SerdeError, | ||||
|             { | ||||
|                 Ok(EventType::from(v)) | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -65,7 +65,7 @@ macro_rules! impl_event { | ||||
|                 &self.event_type | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
| macro_rules! room_event { | ||||
| @ -138,7 +138,7 @@ macro_rules! impl_room_event { | ||||
|                 &self.sender | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
| macro_rules! state_event { | ||||
| @ -207,5 +207,5 @@ macro_rules! impl_state_event { | ||||
|                 &self.state_key | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     }; | ||||
| } | ||||
|  | ||||
| @ -1,8 +1,8 @@ | ||||
| //! Types for the *m.room.message* event.
 | ||||
| 
 | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::de::Error; | ||||
| use serde_json::{Value, from_value}; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| use super::{ImageInfo, ThumbnailInfo}; | ||||
| 
 | ||||
| @ -260,7 +260,10 @@ impl_enum! { | ||||
| } | ||||
| 
 | ||||
| impl Serialize for MessageEventContent { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         match *self { | ||||
|             MessageEventContent::Audio(ref content) => content.serialize(serializer), | ||||
|             MessageEventContent::Emote(ref content) => content.serialize(serializer), | ||||
| @ -275,7 +278,10 @@ impl Serialize for MessageEventContent { | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for MessageEventContent { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         let value: Value = Deserialize::deserialize(deserializer)?; | ||||
| 
 | ||||
|         let message_type_value = match value.get("msgtype") { | ||||
| @ -361,18 +367,16 @@ impl<'de> Deserialize<'de> for MessageEventContent { | ||||
| mod tests { | ||||
|     use serde_json::{from_str, to_string}; | ||||
| 
 | ||||
|     use super::{AudioMessageEventContent, MessageType, MessageEventContent}; | ||||
|     use super::{AudioMessageEventContent, MessageEventContent, MessageType}; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn serialization() { | ||||
|         let message_event_content = MessageEventContent::Audio( | ||||
|             AudioMessageEventContent { | ||||
|         let message_event_content = MessageEventContent::Audio(AudioMessageEventContent { | ||||
|             body: "test".to_string(), | ||||
|             info: None, | ||||
|             msgtype: MessageType::Audio, | ||||
|             url: "http://example.com/audio.mp3".to_string(), | ||||
|             } | ||||
|         ); | ||||
|         }); | ||||
| 
 | ||||
|         assert_eq!( | ||||
|             to_string(&message_event_content).unwrap(), | ||||
| @ -382,14 +386,12 @@ mod tests { | ||||
| 
 | ||||
|     #[test] | ||||
|     fn deserialization() { | ||||
|         let message_event_content = MessageEventContent::Audio( | ||||
|             AudioMessageEventContent { | ||||
|         let message_event_content = MessageEventContent::Audio(AudioMessageEventContent { | ||||
|             body: "test".to_string(), | ||||
|             info: None, | ||||
|             msgtype: MessageType::Audio, | ||||
|             url: "http://example.com/audio.mp3".to_string(), | ||||
|             } | ||||
|         ); | ||||
|         }); | ||||
| 
 | ||||
|         assert_eq!( | ||||
|             from_str::<MessageEventContent>( | ||||
|  | ||||
| @ -19,17 +19,15 @@ mod tests { | ||||
|     use ruma_identifiers::{EventId, RoomId, UserId}; | ||||
|     use serde_json::{from_str, to_string}; | ||||
| 
 | ||||
|     use room::pinned_events::{PinnedEventsContent, PinnedEventsEvent}; | ||||
|     use Event; | ||||
|     use EventType; | ||||
|     use RoomEvent; | ||||
|     use StateEvent; | ||||
|     use room::pinned_events::{PinnedEventsEvent, PinnedEventsContent}; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn serialization_deserialization() { | ||||
|         let mut content: PinnedEventsContent = PinnedEventsContent { | ||||
|             pinned: Vec::new() | ||||
|         }; | ||||
|         let mut content: PinnedEventsContent = PinnedEventsContent { pinned: Vec::new() }; | ||||
| 
 | ||||
|         content.pinned.push(EventId::new("example.com").unwrap()); | ||||
|         content.pinned.push(EventId::new("example.com").unwrap()); | ||||
|  | ||||
| @ -5,11 +5,10 @@ | ||||
| //! state event to be created, when the other fields can be inferred from a larger context, or where
 | ||||
| //! the other fields are otherwise inapplicable.
 | ||||
| 
 | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::de::Error; | ||||
| use serde_json::{Value, from_value}; | ||||
| use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde_json::{from_value, Value}; | ||||
| 
 | ||||
| use EventType; | ||||
| use room::aliases::AliasesEventContent; | ||||
| use room::avatar::AvatarEventContent; | ||||
| use room::canonical_alias::CanonicalAliasEventContent; | ||||
| @ -22,6 +21,7 @@ use room::name::NameEventContent; | ||||
| use room::power_levels::PowerLevelsEventContent; | ||||
| use room::third_party_invite::ThirdPartyInviteEventContent; | ||||
| use room::topic::TopicEventContent; | ||||
| use EventType; | ||||
| 
 | ||||
| /// A stripped-down version of a state event that is included along with some other events.
 | ||||
| #[derive(Clone, Debug)] | ||||
| @ -76,7 +76,10 @@ pub struct StrippedStateContent<C> { | ||||
| } | ||||
| 
 | ||||
| impl Serialize for StrippedState { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer { | ||||
|     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> | ||||
|     where | ||||
|         S: Serializer, | ||||
|     { | ||||
|         match *self { | ||||
|             StrippedState::RoomAliases(ref event) => event.serialize(serializer), | ||||
|             StrippedState::RoomAvatar(ref event) => event.serialize(serializer), | ||||
| @ -95,7 +98,10 @@ impl Serialize for StrippedState { | ||||
| } | ||||
| 
 | ||||
| impl<'de> Deserialize<'de> for StrippedState { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer<'de> { | ||||
|     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> | ||||
|     where | ||||
|         D: Deserializer<'de>, | ||||
|     { | ||||
|         let value: Value = Deserialize::deserialize(deserializer)?; | ||||
| 
 | ||||
|         let event_type_value = match value.get("type") { | ||||
| @ -116,7 +122,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomAliases(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomAvatar => { | ||||
|                 let event = match from_value::<StrippedRoomAvatar>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -124,7 +130,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomAvatar(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomCanonicalAlias => { | ||||
|                 let event = match from_value::<StrippedRoomCanonicalAlias>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -132,7 +138,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomCanonicalAlias(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomCreate => { | ||||
|                 let event = match from_value::<StrippedRoomCreate>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -140,7 +146,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomCreate(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomGuestAccess => { | ||||
|                 let event = match from_value::<StrippedRoomGuestAccess>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -148,7 +154,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomGuestAccess(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomHistoryVisibility => { | ||||
|                 let event = match from_value::<StrippedRoomHistoryVisibility>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -156,7 +162,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomHistoryVisibility(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomJoinRules => { | ||||
|                 let event = match from_value::<StrippedRoomJoinRules>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -164,7 +170,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomJoinRules(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomMember => { | ||||
|                 let event = match from_value::<StrippedRoomMember>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -172,7 +178,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomMember(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomName => { | ||||
|                 let event = match from_value::<StrippedRoomName>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -180,7 +186,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomName(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomPowerLevels => { | ||||
|                 let event = match from_value::<StrippedRoomPowerLevels>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -188,7 +194,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomPowerLevels(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomThirdPartyInvite => { | ||||
|                 let event = match from_value::<StrippedRoomThirdPartyInvite>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -196,7 +202,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomThirdPartyInvite(event)) | ||||
|             }, | ||||
|             } | ||||
|             EventType::RoomTopic => { | ||||
|                 let event = match from_value::<StrippedRoomTopic>(value) { | ||||
|                     Ok(event) => event, | ||||
| @ -204,7 +210,7 @@ impl<'de> Deserialize<'de> for StrippedState { | ||||
|                 }; | ||||
| 
 | ||||
|                 Ok(StrippedState::RoomTopic(event)) | ||||
|             }, | ||||
|             } | ||||
|             _ => { | ||||
|                 return Err(D::Error::custom("not a state event".to_string())); | ||||
|             } | ||||
| @ -250,18 +256,20 @@ pub type StrippedRoomTopic = StrippedStateContent<TopicEventContent>; | ||||
| 
 | ||||
| #[cfg(test)] | ||||
| mod tests { | ||||
|     use EventType; | ||||
|     use super::{StrippedRoomTopic, StrippedState}; | ||||
|     use room::join_rules::JoinRule; | ||||
|     use room::topic::TopicEventContent; | ||||
|     use serde_json::{from_str, to_string}; | ||||
|     use super::{StrippedRoomTopic, StrippedState}; | ||||
|     use EventType; | ||||
| 
 | ||||
|     #[test] | ||||
|     fn serialize_stripped_state_event() { | ||||
|         let content = StrippedRoomTopic { | ||||
|             content: TopicEventContent { topic: "Testing room".to_string() }, | ||||
|             content: TopicEventContent { | ||||
|                 topic: "Testing room".to_string(), | ||||
|             }, | ||||
|             state_key: "".to_string(), | ||||
|             event_type: EventType::RoomTopic | ||||
|             event_type: EventType::RoomTopic, | ||||
|         }; | ||||
| 
 | ||||
|         let event = StrippedState::RoomTopic(content); | ||||
| @ -319,7 +327,7 @@ mod tests { | ||||
|                 assert_eq!(event.content.name, "Ruma"); | ||||
|                 assert_eq!(event.event_type, EventType::RoomName); | ||||
|                 assert_eq!(event.state_key, ""); | ||||
|             }, | ||||
|             } | ||||
|             _ => { | ||||
|                 assert!(false); | ||||
|             } | ||||
| @ -330,7 +338,7 @@ mod tests { | ||||
|                 assert_eq!(event.content.join_rule, JoinRule::Public); | ||||
|                 assert_eq!(event.event_type, EventType::RoomJoinRules); | ||||
|                 assert_eq!(event.state_key, ""); | ||||
|             }, | ||||
|             } | ||||
|             _ => { | ||||
|                 assert!(false); | ||||
|             } | ||||
| @ -348,7 +356,7 @@ mod tests { | ||||
|                 assert_eq!(event.content.url, "https://domain.com/image.jpg"); | ||||
|                 assert_eq!(event.event_type, EventType::RoomAvatar); | ||||
|                 assert_eq!(event.state_key, ""); | ||||
|             }, | ||||
|             } | ||||
|             _ => { | ||||
|                 assert!(false); | ||||
|             } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user