Update serde to 0.9.
This commit is contained in:
parent
32fb575db8
commit
f01b722ae2
10
Cargo.toml
10
Cargo.toml
@ -11,8 +11,8 @@ repository = "https://github.com/ruma/ruma-events"
|
||||
version = "0.3.0"
|
||||
|
||||
[dependencies]
|
||||
ruma-identifiers = "0.6.0"
|
||||
ruma-signatures = "0.1.0"
|
||||
serde = "0.8.19"
|
||||
serde_derive = "0.8.19"
|
||||
serde_json = "0.8.4"
|
||||
ruma-identifiers = "0.7.0"
|
||||
ruma-signatures = "0.2.0"
|
||||
serde = "0.9.1"
|
||||
serde_derive = "0.9.1"
|
||||
serde_json = "0.9.1"
|
||||
|
@ -25,7 +25,8 @@ use room::topic::TopicEvent;
|
||||
use tag::TagEvent;
|
||||
use typing::TypingEvent;
|
||||
|
||||
use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer};
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use serde::de::Error;
|
||||
use serde_json::{Value, from_value};
|
||||
|
||||
/// A basic event, room event, or state event.
|
||||
@ -160,7 +161,7 @@ pub enum StateEvent {
|
||||
}
|
||||
|
||||
impl Serialize for Event {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), 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),
|
||||
@ -192,10 +193,10 @@ impl Serialize for Event {
|
||||
}
|
||||
|
||||
impl Deserialize for Event {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
let value: Value = try!(Deserialize::deserialize(deserializer));
|
||||
|
||||
let event_type_value = match value.find("type") {
|
||||
let event_type_value = match value.get("type") {
|
||||
Some(value) => value.clone(),
|
||||
None => return Err(D::Error::missing_field("type")),
|
||||
};
|
||||
@ -383,15 +384,15 @@ impl Deserialize for Event {
|
||||
Ok(Event::Typing(event))
|
||||
}
|
||||
EventType::Custom(_) => {
|
||||
if value.find("state_key").is_some() {
|
||||
if value.get("state_key").is_some() {
|
||||
let event = match from_value::<CustomStateEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
};
|
||||
|
||||
Ok(Event::CustomState(event))
|
||||
} else if value.find("event_id").is_some() && value.find("room_id").is_some() &&
|
||||
value.find("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())),
|
||||
@ -412,7 +413,7 @@ impl Deserialize for Event {
|
||||
}
|
||||
|
||||
impl Serialize for RoomEvent {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), 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),
|
||||
@ -439,10 +440,10 @@ impl Serialize for RoomEvent {
|
||||
}
|
||||
|
||||
impl Deserialize for RoomEvent {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
let value: Value = try!(Deserialize::deserialize(deserializer));
|
||||
|
||||
let event_type_value = match value.find("type") {
|
||||
let event_type_value = match value.get("type") {
|
||||
Some(value) => value.clone(),
|
||||
None => return Err(D::Error::missing_field("type")),
|
||||
};
|
||||
@ -598,7 +599,7 @@ impl Deserialize for RoomEvent {
|
||||
Ok(RoomEvent::RoomTopic(event))
|
||||
}
|
||||
EventType::Custom(_) => {
|
||||
if value.find("state_key").is_some() {
|
||||
if value.get("state_key").is_some() {
|
||||
let event = match from_value::<CustomStateEvent>(value) {
|
||||
Ok(event) => event,
|
||||
Err(error) => return Err(D::Error::custom(error.to_string())),
|
||||
@ -622,7 +623,7 @@ impl Deserialize for RoomEvent {
|
||||
}
|
||||
|
||||
impl Serialize for StateEvent {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), 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),
|
||||
@ -642,10 +643,10 @@ impl Serialize for StateEvent {
|
||||
}
|
||||
|
||||
impl Deserialize for StateEvent {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
let value: Value = try!(Deserialize::deserialize(deserializer));
|
||||
|
||||
let event_type_value = match value.find("type") {
|
||||
let event_type_value = match value.get("type") {
|
||||
Some(value) => value.clone(),
|
||||
None => return Err(D::Error::missing_field("type")),
|
||||
};
|
||||
|
@ -13,7 +13,8 @@ use room::redaction::RedactionEvent;
|
||||
use tag::TagEvent;
|
||||
use typing::TypingEvent;
|
||||
|
||||
use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer};
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use serde::de::Error;
|
||||
use serde_json::{Value, from_value};
|
||||
|
||||
pub use super::all::StateEvent;
|
||||
@ -53,7 +54,7 @@ pub enum RoomEvent {
|
||||
}
|
||||
|
||||
impl Serialize for Event {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer {
|
||||
match *self {
|
||||
Event::Presence(ref event) => event.serialize(serializer),
|
||||
Event::Receipt(ref event) => event.serialize(serializer),
|
||||
@ -65,10 +66,10 @@ impl Serialize for Event {
|
||||
}
|
||||
|
||||
impl Deserialize for Event {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
let value: Value = try!(Deserialize::deserialize(deserializer));
|
||||
|
||||
let event_type_value = match value.find("type") {
|
||||
let event_type_value = match value.get("type") {
|
||||
Some(value) => value.clone(),
|
||||
None => return Err(D::Error::missing_field("type")),
|
||||
};
|
||||
@ -132,7 +133,7 @@ impl Deserialize for Event {
|
||||
}
|
||||
|
||||
impl Serialize for RoomEvent {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), 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),
|
||||
@ -146,10 +147,10 @@ impl Serialize for RoomEvent {
|
||||
}
|
||||
|
||||
impl Deserialize for RoomEvent {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
let value: Value = try!(Deserialize::deserialize(deserializer));
|
||||
|
||||
let event_type_value = match value.find("type") {
|
||||
let event_type_value = match value.get("type") {
|
||||
Some(value) => value.clone(),
|
||||
None => return Err(D::Error::missing_field("type")),
|
||||
};
|
||||
|
18
src/lib.rs
18
src/lib.rs
@ -95,7 +95,7 @@
|
||||
//! However, the `ruma_events::collections::only::Event` enum does *not* include *m.room.message*,
|
||||
//! because *m.room.message* implements a *more specific* event trait than `Event`.
|
||||
|
||||
#![feature(proc_macro)]
|
||||
#![deny(missing_debug_implementations)]
|
||||
#![deny(missing_docs)]
|
||||
|
||||
extern crate ruma_identifiers;
|
||||
@ -104,11 +104,11 @@ extern crate serde;
|
||||
#[macro_use] extern crate serde_derive;
|
||||
extern crate serde_json;
|
||||
|
||||
use std::fmt::{Debug, Display, Formatter, Error as FmtError};
|
||||
use std::fmt::{Debug, Display, Formatter, Error as FmtError, Result as FmtResult};
|
||||
|
||||
use ruma_identifiers::{EventId, RoomId, UserId};
|
||||
use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer};
|
||||
use serde::de::Visitor;
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use serde::de::{Error as SerdeError, Visitor};
|
||||
use serde_json::Value;
|
||||
|
||||
#[macro_use] mod macros;
|
||||
@ -301,19 +301,23 @@ impl<'a> From<&'a str> for EventType {
|
||||
}
|
||||
|
||||
impl Serialize for EventType {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), 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 Deserialize for EventType {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
struct EventTypeVisitor;
|
||||
|
||||
impl Visitor for EventTypeVisitor {
|
||||
type Value = EventType;
|
||||
|
||||
fn visit_str<E>(&mut self, v: &str) -> Result<Self::Value, E> where E: SerdeError {
|
||||
fn expecting(&self, formatter: &mut Formatter) -> FmtResult {
|
||||
write!(formatter, "a Matrix event type as a string")
|
||||
}
|
||||
|
||||
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: SerdeError {
|
||||
Ok(EventType::from(v))
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
//! Types for the *m.room.message* event.
|
||||
|
||||
use serde::{Deserialize, Deserializer, Error as SerdeError, Serialize, Serializer};
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use serde::de::Error;
|
||||
use serde_json::{Value, from_value};
|
||||
|
||||
use super::ImageInfo;
|
||||
@ -253,7 +254,7 @@ impl_enum! {
|
||||
}
|
||||
|
||||
impl Serialize for MessageEventContent {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), 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),
|
||||
@ -268,10 +269,10 @@ impl Serialize for MessageEventContent {
|
||||
}
|
||||
|
||||
impl Deserialize for MessageEventContent {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
let value: Value = try!(Deserialize::deserialize(deserializer));
|
||||
|
||||
let message_type_value = match value.find("msgtype") {
|
||||
let message_type_value = match value.get("msgtype") {
|
||||
Some(value) => value.clone(),
|
||||
None => return Err(D::Error::missing_field("msgtype")),
|
||||
};
|
||||
|
@ -5,7 +5,8 @@
|
||||
//! 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, Error as SerdeError, Serialize, Serializer};
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
use serde::de::Error;
|
||||
use serde_json::{Value, from_value};
|
||||
|
||||
use EventType;
|
||||
@ -75,7 +76,7 @@ pub struct StrippedStateContent<C> where C: Deserialize + Serialize {
|
||||
}
|
||||
|
||||
impl Serialize for StrippedState {
|
||||
fn serialize<S>(&self, serializer: &mut S) -> Result<(), 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),
|
||||
@ -94,10 +95,10 @@ impl Serialize for StrippedState {
|
||||
}
|
||||
|
||||
impl Deserialize for StrippedState {
|
||||
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: Deserializer {
|
||||
let value: Value = try!(Deserialize::deserialize(deserializer));
|
||||
|
||||
let event_type_value = match value.find("type") {
|
||||
let event_type_value = match value.get("type") {
|
||||
Some(value) => value.clone(),
|
||||
None => return Err(D::Error::missing_field("type")),
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user