Update matrix events to their latest version
This commit is contained in:
		
							parent
							
								
									a51448e09d
								
							
						
					
					
						commit
						a9490dbee8
					
				| @ -10,7 +10,7 @@ room_event! { | ||||
| /// The payload of an `AnswerEvent`.
 | ||||
| #[derive(Clone, Debug, Deserialize, Serialize)] | ||||
| pub struct AnswerEventContent { | ||||
|     /// The VoIP session description.
 | ||||
|     /// The VoIP session description object. The session description type must be *answer*.
 | ||||
|     pub answer: SessionDescription, | ||||
|     /// The ID of the call this event relates to.
 | ||||
|     pub call_id: String, | ||||
|  | ||||
| @ -16,7 +16,7 @@ pub struct InviteEventContent { | ||||
|     /// value, clients should discard it. They should also no longer show the call as awaiting an
 | ||||
|     /// answer in the UI.
 | ||||
|     pub lifetime: u64, | ||||
|     /// The session description object.
 | ||||
|     /// The session description object. The session description type must be *offer*.
 | ||||
|     pub offer: SessionDescription, | ||||
|     /// The version of the VoIP specification this messages adheres to.
 | ||||
|     pub version: u64, | ||||
|  | ||||
							
								
								
									
										15
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -192,12 +192,6 @@ pub trait Event where Self: Debug + for<'a> Deserialize<'a> + Serialize { | ||||
| 
 | ||||
|     /// The type of the event.
 | ||||
|     fn event_type(&self) -> &EventType; | ||||
| 
 | ||||
|     /// Extra top-level key-value pairs specific to this event type, but that are not under the
 | ||||
|     /// `content` field.
 | ||||
|     fn extra_content(&self) -> Option<Value> { | ||||
|         None | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// An event within the context of a room.
 | ||||
| @ -205,14 +199,17 @@ pub trait RoomEvent: Event { | ||||
|     /// The unique identifier for the event.
 | ||||
|     fn event_id(&self) -> &EventId; | ||||
| 
 | ||||
|     /// Timestamp in milliseconds on originating homeserver when this event was sent.
 | ||||
|     fn origin_server_ts(&self) -> u64; | ||||
| 
 | ||||
|     /// The unique identifier for the room associated with this event.
 | ||||
|     fn room_id(&self) -> &RoomId; | ||||
| 
 | ||||
|     /// The unique identifier for the user who sent this event.
 | ||||
|     fn sender(&self) -> &UserId; | ||||
| 
 | ||||
|     /// Additional key-value pairs not signed by the homeserver.
 | ||||
|     fn unsigned(&self) -> Option<&Value>; | ||||
| 
 | ||||
|     /// The unique identifier for the user associated with this event.
 | ||||
|     fn user_id(&self) -> &UserId; | ||||
| } | ||||
| 
 | ||||
| /// An event that describes persistent state about a room.
 | ||||
|  | ||||
| @ -90,6 +90,9 @@ macro_rules! room_event { | ||||
|             #[serde(rename="type")] | ||||
|             pub event_type: $crate::EventType, | ||||
| 
 | ||||
|             /// Timestamp in milliseconds on originating homeserver when this event was sent.
 | ||||
|             pub origin_server_ts: u64, | ||||
| 
 | ||||
|             /// The unique identifier for the room associated with this event.
 | ||||
|             pub room_id: ::ruma_identifiers::RoomId, | ||||
| 
 | ||||
| @ -97,9 +100,8 @@ macro_rules! room_event { | ||||
|             #[serde(skip_serializing_if="Option::is_none")] | ||||
|             pub unsigned: Option<::serde_json::Value>, | ||||
| 
 | ||||
|             /// The unique identifier for the user associated with this event.
 | ||||
|             #[serde(rename="sender")] | ||||
|             pub user_id: ::ruma_identifiers::UserId, | ||||
|             /// The unique identifier for the user who sent this event.
 | ||||
|             pub sender: ::ruma_identifiers::UserId, | ||||
| 
 | ||||
|             $( | ||||
|                 $(#[$field_attr])* | ||||
| @ -120,6 +122,10 @@ macro_rules! impl_room_event { | ||||
|                 &self.event_id | ||||
|             } | ||||
| 
 | ||||
|             fn origin_server_ts(&self) -> u64 { | ||||
|                 self.origin_server_ts | ||||
|             } | ||||
| 
 | ||||
|             fn room_id(&self) -> &::ruma_identifiers::RoomId { | ||||
|                 &self.room_id | ||||
|             } | ||||
| @ -128,8 +134,8 @@ macro_rules! impl_room_event { | ||||
|                 self.unsigned.as_ref() | ||||
|             } | ||||
| 
 | ||||
|             fn user_id(&self) -> &::ruma_identifiers::UserId { | ||||
|                 &self.user_id | ||||
|             fn sender(&self) -> &::ruma_identifiers::UserId { | ||||
|                 &self.sender | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @ -158,6 +164,9 @@ macro_rules! state_event { | ||||
|             #[serde(rename="type")] | ||||
|             pub event_type: $crate::EventType, | ||||
| 
 | ||||
|             /// Timestamp in milliseconds on originating homeserver when this event was sent.
 | ||||
|             pub origin_server_ts: u64, | ||||
| 
 | ||||
|             /// The previous content for this state key, if any.
 | ||||
|             #[serde(skip_serializing_if="Option::is_none")] | ||||
|             pub prev_content: Option<$content_type>, | ||||
| @ -173,8 +182,7 @@ macro_rules! state_event { | ||||
|             pub unsigned: Option<::serde_json::Value>, | ||||
| 
 | ||||
|             /// The unique identifier for the user associated with this event.
 | ||||
|             #[serde(rename="sender")] | ||||
|             pub user_id: ::ruma_identifiers::UserId, | ||||
|             pub sender: ::ruma_identifiers::UserId, | ||||
| 
 | ||||
|             $( | ||||
|                 $(#[$field_attr])* | ||||
|  | ||||
| @ -25,7 +25,7 @@ pub struct PresenceEventContent { | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub displayname: Option<String>, | ||||
| 
 | ||||
|     /// The last time since this used performed some action, in milliseconds.
 | ||||
|     /// The last time since this user performed some action, in milliseconds.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub last_active_ago: Option<u64>, | ||||
| 
 | ||||
|  | ||||
| @ -14,5 +14,6 @@ pub struct CreateEventContent { | ||||
|     /// The `user_id` of the room creator. This is set by the homeserver.
 | ||||
|     pub creator: UserId, | ||||
|     /// Whether or not this room's data should be transferred to other homeservers.
 | ||||
|     #[serde(rename="m.federate")] | ||||
|     pub federate: Option<bool>, | ||||
| } | ||||
|  | ||||
| @ -38,6 +38,11 @@ pub struct MemberEventContent { | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub displayname: Option<String>, | ||||
| 
 | ||||
|     /// Flag indicating if the room containing this event was created
 | ||||
|     /// with the intention of being a direct chat.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub is_direct: Option<bool>, | ||||
| 
 | ||||
|     /// The membership state of this user.
 | ||||
|     pub membership: MembershipState, | ||||
| 
 | ||||
|  | ||||
| @ -4,7 +4,7 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer}; | ||||
| use serde::de::Error; | ||||
| use serde_json::{Value, from_value}; | ||||
| 
 | ||||
| use super::ImageInfo; | ||||
| use super::{ImageInfo, ThumbnailInfo}; | ||||
| 
 | ||||
| room_event! { | ||||
|     /// A message sent to a room.
 | ||||
| @ -118,17 +118,13 @@ pub struct FileMessageEventContent { | ||||
|     /// A human-readable description of the file. This is recommended to be the filename of the
 | ||||
|     /// original upload.
 | ||||
|     pub body: String, | ||||
|     /// The original filename of the uploaded file.
 | ||||
|     pub filename: String, | ||||
|     /// Metadata about the file referred to in `url`.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub info: Option<FileInfo>, | ||||
|     /// The message type. Always *m.file*.
 | ||||
|     pub msgtype: MessageType, | ||||
|     /// Metadata about the image referred to in `thumbnail_url`.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_info: Option<ImageInfo>, | ||||
|     /// The URL to the thumbnail of the file.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_url: Option<String>, | ||||
|     /// The URL to the file.
 | ||||
|     pub url: String, | ||||
| } | ||||
| @ -140,6 +136,12 @@ pub struct FileInfo { | ||||
|     pub mimetype: String, | ||||
|     /// The size of the file in bytes.
 | ||||
|     pub size: u64, | ||||
|     /// Metadata about the image referred to in `thumbnail_url`.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_info: Option<ThumbnailInfo>, | ||||
|     /// The URL to the thumbnail of the file.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_url: Option<String>, | ||||
| } | ||||
| 
 | ||||
| /// The payload of an image message.
 | ||||
| @ -153,12 +155,6 @@ pub struct ImageMessageEventContent { | ||||
|     pub info: Option<ImageInfo>, | ||||
|     /// The message type. Always *m.image*.
 | ||||
|     pub msgtype: MessageType, | ||||
|     /// Metadata about the image referred to in `thumbnail_url`.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_info: Option<ImageInfo>, | ||||
|     /// The URL to the thumbnail of the image.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_url: Option<String>, | ||||
|     /// The URL to the image.
 | ||||
|     pub url: String, | ||||
| } | ||||
| @ -173,9 +169,17 @@ pub struct LocationMessageEventContent { | ||||
|     pub geo_uri: String, | ||||
|     /// The message type. Always *m.location*.
 | ||||
|     pub msgtype: MessageType, | ||||
|     /// Info about the location being represented.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub info: Option<LocationInfo>, | ||||
| } | ||||
| 
 | ||||
| /// Thumbnail info associated with a location.
 | ||||
| #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] | ||||
| pub struct LocationInfo { | ||||
|     /// Metadata about the image referred to in `thumbnail_url`.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_info: Option<ImageInfo>, | ||||
|     pub thumbnail_info: Option<ThumbnailInfo>, | ||||
|     /// The URL to a thumbnail of the location being represented.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_url: Option<String>, | ||||
| @ -232,7 +236,7 @@ pub struct VideoInfo { | ||||
|     pub size: Option<u64>, | ||||
|     /// Metadata about an image.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_info: Option<ImageInfo>, | ||||
|     pub thumbnail_info: Option<ThumbnailInfo>, | ||||
|     /// The URL to a thumbnail of the video clip.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_url: Option<String>, | ||||
|  | ||||
| @ -21,13 +21,34 @@ pub mod topic; | ||||
| #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] | ||||
| pub struct ImageInfo { | ||||
|     /// The height of the image in pixels.
 | ||||
|     #[serde(rename = "h")] | ||||
|     #[serde(rename="h")] | ||||
|     pub height: u64, | ||||
|     /// The MIME type of the image, e.g. "image/png."
 | ||||
|     pub mimetype: String, | ||||
|     /// The file size of the image in bytes.
 | ||||
|     pub size: u64, | ||||
|     /// Metadata about the image referred to in `thumbnail_url`.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_info: Option<ThumbnailInfo>, | ||||
|     /// The URL to the thumbnail of the image.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_url: Option<String>, | ||||
|     /// The width of the image in pixels.
 | ||||
|     #[serde(rename = "w")] | ||||
|     #[serde(rename="w")] | ||||
|     pub width: u64, | ||||
| } | ||||
| 
 | ||||
| /// Metadata about a thumbnail.
 | ||||
| #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] | ||||
| pub struct ThumbnailInfo { | ||||
|     /// The height of the thumbnail in pixels.
 | ||||
|     #[serde(rename="h")] | ||||
|     pub height: u64, | ||||
|     /// The MIME type of the thumbnail, e.g. "image/png."
 | ||||
|     pub mimetype: String, | ||||
|     /// The file size of the thumbnail in bytes.
 | ||||
|     pub size: u64, | ||||
|     /// The width of the thumbnail in pixels.
 | ||||
|     #[serde(rename="w")] | ||||
|     pub width: u64, | ||||
| } | ||||
|  | ||||
| @ -294,7 +294,14 @@ mod tests { | ||||
|                     "h": 128, | ||||
|                     "w": 128, | ||||
|                     "mimetype": "image/jpeg", | ||||
|                     "size": 1024 | ||||
|                     "size": 1024, | ||||
|                     "thumbnail_info": { | ||||
|                         "h": 16, | ||||
|                         "w": 16, | ||||
|                         "mimetype": "image/jpeg", | ||||
|                         "size": 32 | ||||
|                     }, | ||||
|                     "thumbnail_url": "https://domain.com/image-thumbnail.jpg" | ||||
|                 }, | ||||
|                 "thumbnail_info": { | ||||
|                     "h": 16, | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| //! Types for the *m.typing* event.
 | ||||
| 
 | ||||
| use ruma_identifiers::{EventId, RoomId}; | ||||
| use ruma_identifiers::{RoomId, UserId}; | ||||
| 
 | ||||
| event! { | ||||
|     /// Informs the client of the list of users currently typing.
 | ||||
| @ -14,5 +14,5 @@ event! { | ||||
| #[derive(Clone, Debug, Deserialize, Serialize)] | ||||
| pub struct TypingEventContent { | ||||
|     /// The list of user IDs typing in this room, if any.
 | ||||
|     pub user_ids: Vec<EventId>, | ||||
|     pub user_ids: Vec<UserId>, | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user