Fix a bunch more deserialization bugs
This commit is contained in:
		
							parent
							
								
									eca6d97690
								
							
						
					
					
						commit
						4a91932ea8
					
				| @ -24,7 +24,9 @@ pub struct Candidate { | ||||
|     /// The SDP "a" line of the candidate.
 | ||||
|     pub candidate: String, | ||||
|     /// The SDP media type this candidate is intended for.
 | ||||
|     #[serde(rename = "sdpMid")] | ||||
|     pub sdp_mid: String, | ||||
|     /// The index of the SDP "m" line this candidate is intended for.
 | ||||
|     #[serde(rename = "sdpMLineIndex")] | ||||
|     pub sdp_m_line_index: u64, | ||||
| } | ||||
|  | ||||
| @ -11,6 +11,7 @@ pub mod invite; | ||||
| #[derive(Clone, Debug, Deserialize, Serialize)] | ||||
| pub struct SessionDescription { | ||||
|     /// The type of session description.
 | ||||
|     #[serde(rename="type")] | ||||
|     pub session_type: SessionDescriptionType, | ||||
|     /// The SDP text of the session description.
 | ||||
|     pub sdp: String, | ||||
|  | ||||
| @ -18,6 +18,7 @@ pub struct PresenceEventContent { | ||||
|     pub avatar_url: Option<String>, | ||||
| 
 | ||||
|     /// Whether or not the user is currently active.
 | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub currently_active: Option<bool>, | ||||
| 
 | ||||
|     /// The current display name for this user.
 | ||||
|  | ||||
| @ -23,6 +23,7 @@ pub type ReceiptEventContent = HashMap<EventId, Receipts>; | ||||
| pub struct Receipts { | ||||
|     /// A collection of users who have sent *m.read* receipts for this event.
 | ||||
|     #[serde(rename="m.read")] | ||||
|     #[serde(default)] | ||||
|     pub m_read: UserReceipts, | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -13,11 +13,14 @@ state_event! { | ||||
| #[derive(Clone, Debug, Deserialize, Serialize)] | ||||
| pub struct AvatarEventContent { | ||||
|     /// Information about the avatar image.
 | ||||
|     pub info: ImageInfo, | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub info: Option<ImageInfo>, | ||||
|     /// Information about the avatar thumbnail image.
 | ||||
|     pub thumbnail_info: ImageInfo, | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_info: Option<ImageInfo>, | ||||
|     /// URL of the avatar thumbnail image.
 | ||||
|     pub thumbnail_url: String, | ||||
|     #[serde(skip_serializing_if="Option::is_none")] | ||||
|     pub thumbnail_url: Option<String>, | ||||
|     /// URL of the avatar image.
 | ||||
|     pub url: String, | ||||
| } | ||||
|  | ||||
| @ -21,11 +21,11 @@ pub mod topic; | ||||
| #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] | ||||
| pub struct ImageInfo { | ||||
|     /// The height of the image in pixels.
 | ||||
|     pub height: u64, | ||||
|     pub h: 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, | ||||
|     /// The width of the image in pixels.
 | ||||
|     pub width: u64, | ||||
|     pub w: u64, | ||||
| } | ||||
|  | ||||
| @ -291,14 +291,14 @@ mod tests { | ||||
|             "state_key": "", | ||||
|             "content": { | ||||
|                 "info": { | ||||
|                     "height": 128, | ||||
|                     "width": 128, | ||||
|                     "h": 128, | ||||
|                     "w": 128, | ||||
|                     "mimetype": "image/jpeg", | ||||
|                     "size": 1024 | ||||
|                 }, | ||||
|                 "thumbnail_info": { | ||||
|                     "height": 16, | ||||
|                     "width": 16, | ||||
|                     "h": 16, | ||||
|                     "w": 16, | ||||
|                     "mimetype": "image/jpeg", | ||||
|                     "size": 32 | ||||
|                 }, | ||||
| @ -331,11 +331,13 @@ mod tests { | ||||
| 
 | ||||
|         match from_str::<StrippedState>(avatar_event).unwrap() { | ||||
|             StrippedState::RoomAvatar(event) => { | ||||
|                 assert_eq!(event.content.info.height, 128); | ||||
|                 assert_eq!(event.content.info.width, 128); | ||||
|                 assert_eq!(event.content.info.mimetype, "image/jpeg"); | ||||
|                 assert_eq!(event.content.info.size, 1024); | ||||
|                 assert_eq!(event.content.thumbnail_info.size, 32); | ||||
|                 let image_info = event.content.info.unwrap(); | ||||
| 
 | ||||
|                 assert_eq!(image_info.h, 128); | ||||
|                 assert_eq!(image_info.w, 128); | ||||
|                 assert_eq!(image_info.mimetype, "image/jpeg"); | ||||
|                 assert_eq!(image_info.size, 1024); | ||||
|                 assert_eq!(event.content.thumbnail_info.unwrap().size, 32); | ||||
|                 assert_eq!(event.content.url, "https://domain.com/image.jpg"); | ||||
|                 assert_eq!(event.event_type, EventType::RoomAvatar); | ||||
|                 assert_eq!(event.state_key, ""); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user