/* * nheko Copyright (C) 2017 Konstantinos Sideris * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include #include "Event.h" namespace matrix { namespace events { template class RoomEvent : public Event { public: inline QString eventId() const; inline QString roomId() const; inline QString sender() const; inline uint64_t timestamp() const; void deserialize(const QJsonValue &data) override; private: QString event_id_; QString room_id_; QString sender_; uint64_t origin_server_ts_; }; template inline QString RoomEvent::eventId() const { return event_id_; } template inline QString RoomEvent::roomId() const { return room_id_; } template inline QString RoomEvent::sender() const { return sender_; } template inline uint64_t RoomEvent::timestamp() const { return origin_server_ts_; } template void RoomEvent::deserialize(const QJsonValue &data) { Event::deserialize(data); auto object = data.toObject(); if (!object.contains("event_id")) throw DeserializationException("event_id key is missing"); if (!object.contains("origin_server_ts")) throw DeserializationException("origin_server_ts key is missing"); // FIXME: Synapse doesn't include room id?! /* if (!object.contains("room_id")) */ /* throw DeserializationException("room_id key is missing"); */ if (!object.contains("sender")) throw DeserializationException("sender key is missing"); event_id_ = object.value("event_id").toString(); room_id_ = object.value("room_id").toString(); sender_ = object.value("sender").toString(); origin_server_ts_ = object.value("origin_server_ts").toDouble(); } } // namespace events } // namespace matrix