Update serde to 0.9.

This commit is contained in:
Jimmy Cuadra 2017-01-26 01:23:38 -08:00
parent 32fb575db8
commit f01b722ae2
6 changed files with 49 additions and 41 deletions

View File

@ -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"

View File

@ -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")),
};

View File

@ -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")),
};

View File

@ -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))
}
}

View File

@ -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")),
};

View File

@ -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")),
};