summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-07-27 13:49:44 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-07-30 14:30:55 +0300
commite5ccb73a20f559983960db2daa08d6086c90b8ec (patch)
tree3212d0727d63611e5398e8eab2a3a4bc1cddbb5d /src
parentAppend backwards events after the spacer (diff)
downloadnheko-e5ccb73a20f559983960db2daa08d6086c90b8ec.tar.xz
Add serialization on matrix events
Diffstat (limited to 'src')
-rw-r--r--src/events/AliasesEventContent.cc15
-rw-r--r--src/events/AvatarEventContent.cc10
-rw-r--r--src/events/CanonicalAliasEventContent.cc10
-rw-r--r--src/events/CreateEventContent.cc10
-rw-r--r--src/events/HistoryVisibilityEventContent.cc16
-rw-r--r--src/events/JoinRulesEventContent.cc16
-rw-r--r--src/events/MemberEventContent.cc24
-rw-r--r--src/events/MessageEventContent.cc8
-rw-r--r--src/events/NameEventContent.cc10
-rw-r--r--src/events/PowerLevelsEventContent.cc28
-rw-r--r--src/events/TopicEventContent.cc10
11 files changed, 157 insertions, 0 deletions
diff --git a/src/events/AliasesEventContent.cc b/src/events/AliasesEventContent.cc

index 89754315..899a7182 100644 --- a/src/events/AliasesEventContent.cc +++ b/src/events/AliasesEventContent.cc
@@ -36,3 +36,18 @@ void AliasesEventContent::deserialize(const QJsonValue &data) for (const auto &alias : aliases) aliases_.push_back(alias.toString()); } + +QJsonObject AliasesEventContent::serialize() const +{ + QJsonObject object; + + QJsonArray aliases; + + for (const auto &alias : aliases_) + aliases.push_back(alias); + + if (aliases.size() > 0) + object["aliases"] = aliases; + + return object; +} diff --git a/src/events/AvatarEventContent.cc b/src/events/AvatarEventContent.cc
index 2f88cac2..dfd46f68 100644 --- a/src/events/AvatarEventContent.cc +++ b/src/events/AvatarEventContent.cc
@@ -36,3 +36,13 @@ void AvatarEventContent::deserialize(const QJsonValue &data) if (!url_.isValid()) qWarning() << "Invalid avatar url" << url_; } + +QJsonObject AvatarEventContent::serialize() const +{ + QJsonObject object; + + if (!url_.isEmpty()) + object["url"] = url_.toString(); + + return object; +} diff --git a/src/events/CanonicalAliasEventContent.cc b/src/events/CanonicalAliasEventContent.cc
index 89042722..9792027c 100644 --- a/src/events/CanonicalAliasEventContent.cc +++ b/src/events/CanonicalAliasEventContent.cc
@@ -31,3 +31,13 @@ void CanonicalAliasEventContent::deserialize(const QJsonValue &data) alias_ = object.value("alias").toString(); } + +QJsonObject CanonicalAliasEventContent::serialize() const +{ + QJsonObject object; + + if (!alias_.isEmpty()) + object["alias"] = alias_; + + return object; +} diff --git a/src/events/CreateEventContent.cc b/src/events/CreateEventContent.cc
index d43a4cc5..a7d22791 100644 --- a/src/events/CreateEventContent.cc +++ b/src/events/CreateEventContent.cc
@@ -31,3 +31,13 @@ void CreateEventContent::deserialize(const QJsonValue &data) creator_ = object.value("creator").toString(); } + +QJsonObject CreateEventContent::serialize() const +{ + QJsonObject object; + + if (!creator_.isEmpty()) + object["creator"] = creator_; + + return object; +} diff --git a/src/events/HistoryVisibilityEventContent.cc b/src/events/HistoryVisibilityEventContent.cc
index 25630aa4..77970553 100644 --- a/src/events/HistoryVisibilityEventContent.cc +++ b/src/events/HistoryVisibilityEventContent.cc
@@ -42,3 +42,19 @@ void HistoryVisibilityEventContent::deserialize(const QJsonValue &data) else throw DeserializationException(QString("Unknown history_visibility value: %1").arg(value).toUtf8().constData()); } + +QJsonObject HistoryVisibilityEventContent::serialize() const +{ + QJsonObject object; + + if (history_visibility_ == HistoryVisibility::Invited) + object["history_visibility"] = "invited"; + else if (history_visibility_ == HistoryVisibility::Joined) + object["history_visibility"] = "joined"; + else if (history_visibility_ == HistoryVisibility::Shared) + object["history_visibility"] = "shared"; + else if (history_visibility_ == HistoryVisibility::WorldReadable) + object["history_visibility"] = "world_readable"; + + return object; +} diff --git a/src/events/JoinRulesEventContent.cc b/src/events/JoinRulesEventContent.cc
index 913aa097..389ab9b8 100644 --- a/src/events/JoinRulesEventContent.cc +++ b/src/events/JoinRulesEventContent.cc
@@ -42,3 +42,19 @@ void JoinRulesEventContent::deserialize(const QJsonValue &data) else throw DeserializationException(QString("Unknown join_rule value: %1").arg(value).toUtf8().constData()); } + +QJsonObject JoinRulesEventContent::serialize() const +{ + QJsonObject object; + + if (join_rule_ == JoinRule::Invite) + object["join_rule"] = "invite"; + else if (join_rule_ == JoinRule::Knock) + object["join_rule"] = "knock"; + else if (join_rule_ == JoinRule::Private) + object["join_rule"] = "private"; + else if (join_rule_ == JoinRule::Public) + object["join_rule"] = "public"; + + return object; +} diff --git a/src/events/MemberEventContent.cc b/src/events/MemberEventContent.cc
index 4dc8ad5f..608ad1b2 100644 --- a/src/events/MemberEventContent.cc +++ b/src/events/MemberEventContent.cc
@@ -55,3 +55,27 @@ void MemberEventContent::deserialize(const QJsonValue &data) if (object.contains("displayname")) display_name_ = object.value("displayname").toString(); } + +QJsonObject MemberEventContent::serialize() const +{ + QJsonObject object; + + if (membership_state_ == Membership::Ban) + object["membership"] = "ban"; + else if (membership_state_ == Membership::Invite) + object["membership"] = "invite"; + else if (membership_state_ == Membership::Join) + object["membership"] = "join"; + else if (membership_state_ == Membership::Knock) + object["membership"] = "knock"; + else if (membership_state_ == Membership::Leave) + object["membership"] = "leave"; + + if (!avatar_url_.isEmpty()) + object["avatar_url"] = avatar_url_.toString(); + + if (!display_name_.isEmpty()) + object["displayname"] = display_name_; + + return object; +} diff --git a/src/events/MessageEventContent.cc b/src/events/MessageEventContent.cc
index df2c39e8..215f2d97 100644 --- a/src/events/MessageEventContent.cc +++ b/src/events/MessageEventContent.cc
@@ -61,3 +61,11 @@ void MessageEventContent::deserialize(const QJsonValue &data) body_ = object.value("body").toString(); } + +QJsonObject MessageEventContent::serialize() const +{ + // TODO: Add for all the message contents. + QJsonObject object; + + return object; +} diff --git a/src/events/NameEventContent.cc b/src/events/NameEventContent.cc
index bfb2f878..61126e6b 100644 --- a/src/events/NameEventContent.cc +++ b/src/events/NameEventContent.cc
@@ -31,3 +31,13 @@ void NameEventContent::deserialize(const QJsonValue &data) name_ = object.value("name").toString(); } + +QJsonObject NameEventContent::serialize() const +{ + QJsonObject object; + + if (!name_.isEmpty()) + object["name"] = name_; + + return object; +} diff --git a/src/events/PowerLevelsEventContent.cc b/src/events/PowerLevelsEventContent.cc
index 048b8e97..765913c4 100644 --- a/src/events/PowerLevelsEventContent.cc +++ b/src/events/PowerLevelsEventContent.cc
@@ -65,6 +65,34 @@ void PowerLevelsEventContent::deserialize(const QJsonValue &data) } } +QJsonObject PowerLevelsEventContent::serialize() const +{ + QJsonObject object; + + object["ban"] = ban_; + object["invite"] = invite_; + object["kick"] = kick_; + object["redact"] = redact_; + + object["events_default"] = events_default_; + object["users_default"] = users_default_; + object["state_default"] = state_default_; + + QJsonObject users; + QJsonObject events; + + for (auto it = users_.constBegin(); it != users_.constEnd(); it++) + users.insert(it.key(), it.value()); + + for (auto it = events_.constBegin(); it != events_.constEnd(); it++) + events.insert(it.key(), it.value()); + + object["users"] = users; + object["events"] = events; + + return object; +} + int PowerLevelsEventContent::eventLevel(QString event_type) const { if (events_.contains(event_type)) diff --git a/src/events/TopicEventContent.cc b/src/events/TopicEventContent.cc
index e8d99ee9..5acdba3e 100644 --- a/src/events/TopicEventContent.cc +++ b/src/events/TopicEventContent.cc
@@ -31,3 +31,13 @@ void TopicEventContent::deserialize(const QJsonValue &data) topic_ = object.value("topic").toString(); } + +QJsonObject TopicEventContent::serialize() const +{ + QJsonObject object; + + if (!topic_.isEmpty()) + object["topic"] = topic_; + + return object; +}