#include "Telegram/Message.h" // Generic constructor // @TODO: Make this an "init"-Method and call it from the constructor Telegram::Message::Message(void) { this->init(); } Telegram::Message::Message(Json::Value json) { if (json["message"].isNull()) { this->init(); return; } this->init(json); } Telegram::Message::Message(std::string message) { Json::Value json; Json::Reader reader; reader.parse(message, json); this->init(json); } void Telegram::Message::init(void) { this->message_id = 0; this->from = NULL; this->date = 0; this->chat = NULL; this->forward_from = NULL; this->forward_date = 0; this->reply_to_message = NULL; this->text = ""; this->entities.clear(); this->audio = NULL; this->document = NULL; this->photo.clear(); this->sticker = NULL; this->video = NULL; this->voice = NULL; this->caption = ""; this->contact = NULL; this->location = NULL; this->venue = NULL; this->new_chat_member = NULL; this->left_chat_member = NULL; this->new_chat_title = ""; this->new_chat_photo.clear(); this->delete_chat_photo = 0; this->group_chat_created = 0; this->supergroup_chat_created = 0; this->migrate_to_chat_id = 0; this->pinned_message = NULL; } void Telegram::Message::init(Json::Value json) { Json::Value msg = json["message"]; this->message_id = msg["message_id"].asUInt64(); this->from = new Telegram::User(msg["from"]); this->date = msg["date"].asUInt64(); this->chat = new Telegram::Chat(msg["chat"]); this->forward_from = new Telegram::User(msg["forward_from"]); this->forward_date = msg["forward_date"].asUInt64(); this->reply_to_message = new Telegram::Message(msg["reply_to_message"]); this->text = msg["text"].asString(); this->setEntities(msg["entities"]); this->audio = new Audio(msg["audio"]); this->document = new Document(msg["document"]); this->photo = this->setPhotos(msg["photo"]); this->sticker = new Sticker(msg["sticker"]); this->video = new Video(msg["video"]); this->voice = new Voice(msg["voice"]); this->caption = msg["caption"].asString(); this->contact = new Contact(msg["contact"]); this->location = new Location(msg["location"]); this->venue = new Venue(msg["venue"]); this->new_chat_member = new User(msg["new_chat_member"]); this->left_chat_member = new User(msg["left_chat_member"]); this->new_chat_title = msg["new_chat_title"].asString(); this->new_chat_photo = this->setPhotos(msg["new_chat_photo"]); this->delete_chat_photo = msg["delete_chat_photo"].asInt64(); this->group_chat_created = msg["group_chat_created"].asInt64(); this->supergroup_chat_created = msg["supergroup_chat_created"].asInt64(); this->migrate_to_chat_id = msg["migrate_to_chat_id"].asUInt64(); this->migrate_from_chat_id = msg["migrate_from_chat_id"].asUInt64(); this->pinned_message = new Message(msg["pinned_message"]); } // Setter void Telegram::Message::setEntities(Json::Value entities) { Json::ArrayIndex size = entities.size(); for(Json::ArrayIndex i = 0; i < size; i++) { Telegram::MessageEntity *entity = new Telegram::MessageEntity(entities[i]); this->entities.push_back(entity); } } std::vector Telegram::Message::setPhotos(Json::Value photos) { Json::ArrayIndex size = photos.size(); std::vector vPhotos; for(Json::ArrayIndex i = 0; i < size; i++) { Telegram::PhotoSize *photo_size = new Telegram::PhotoSize(photos[i]); vPhotos.push_back(photo_size); } return(vPhotos); } // Getter Telegram::Chat *Telegram::Message::getChat() { return(this->chat); } std::string Telegram::Message::getText() { return(this->text); } Telegram::TMessageEntities Telegram::Message::getEntities() { return(this->entities); }