summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNaveen <naveen.sanmane@gmail.com>2015-11-23 10:08:38 +0000
committerNaveen <naveen.sanmane@gmail.com>2015-11-23 10:08:38 +0000
commite05c5ca197d7ccac7ea20db78c1e101090ff629a (patch)
tree11a4c12b3e2b2755e49583d80e6678ad7309301f /src
parent3040a62a71050e53624583bd83b3bffeb6aca9f0 (diff)
Add Chat class
Diffstat (limited to 'src')
-rw-r--r--src/Api.cpp6
-rw-r--r--src/TgTypeParser.cpp33
2 files changed, 37 insertions, 2 deletions
diff --git a/src/Api.cpp b/src/Api.cpp
index 9c8259f..2e3af45 100644
--- a/src/Api.cpp
+++ b/src/Api.cpp
@@ -256,14 +256,20 @@ void Api::setWebhook(const string& url) const {
}
ptree Api::sendRequest(const string& method, const vector<HttpReqArg>& args) const {
+
string url = "https://api.telegram.org/bot";
url += _token;
url += "/";
url += method;
+
+ std::cout << "URL: " << url << std::endl;
string serverResponse = HttpClient::getInstance().makeRequest(url, args);
if (serverResponse.find("<html>") != serverResponse.npos) {
throw TgException("tgbot-cpp library have got html page instead of json response. Maybe you entered wrong bot token.");
}
+
+ std::cout << "Server Response: " << serverResponse << std::endl;
+
ptree result = TgTypeParser::getInstance().parseJson(serverResponse);
try {
if (result.get<bool>("ok", false)) {
diff --git a/src/TgTypeParser.cpp b/src/TgTypeParser.cpp
index 6586ec6..df80ca7 100644
--- a/src/TgTypeParser.cpp
+++ b/src/TgTypeParser.cpp
@@ -32,6 +32,35 @@ TgTypeParser& TgTypeParser::getInstance() {
return result;
}
+Chat::Ptr TgTypeParser::parseJsonAndGetChat(const ptree& data) const {
+ Chat::Ptr result(new Chat);
+ result->id = data.get<int32_t>("id");
+ result->type = data.get<string>("type");
+ result->title = data.get("title", "");
+ result->username = data.get("username", "");
+ result->firstName = data.get<string>("first_name");
+ result->lastName = data.get("last_name", "");
+
+ return result;
+}
+
+string TgTypeParser::parseChat(const Chat::Ptr& object) const {
+ if (!object) {
+ return "";
+ }
+ string result;
+ result += '{';
+ appendToJson(result, "id", object->id);
+ appendToJson(result, "type", object->type);
+ appendToJson(result, "title", object->title);
+ appendToJson(result, "username", object->username);
+ appendToJson(result, "first_name", object->firstName);
+ appendToJson(result, "last_name", object->lastName);
+ result.erase(result.length() - 1);
+ result += '}';
+ return result;
+}
+
User::Ptr TgTypeParser::parseJsonAndGetUser(const ptree& data) const {
User::Ptr result(new User);
result->id = data.get<int32_t>("id");
@@ -81,7 +110,7 @@ Message::Ptr TgTypeParser::parseJsonAndGetMessage(const ptree& data) const {
result->messageId = data.get<int32_t>("message_id");
result->from = parseJsonAndGetUser(data.find("from")->second);
result->date = data.get<int32_t>("date");
- result->chat = parseJsonAndGetGenericChat(data.find("chat")->second);
+ result->chat = tryParseJson<Chat>(&TgTypeParser::parseJsonAndGetChat, data, "chat");
result->forwardFrom = tryParseJson<User>(&TgTypeParser::parseJsonAndGetUser, data, "forward_from");
result->forwardDate = data.get("forward_date", 0);
result->replyToMessage = tryParseJson<Message>(&TgTypeParser::parseJsonAndGetMessage, data, "reply_to_message");
@@ -112,7 +141,7 @@ string TgTypeParser::parseMessage(const Message::Ptr& object) const {
appendToJson(result, "message_id", object->messageId);
appendToJson(result, "from", parseUser(object->from));
appendToJson(result, "date", object->date);
- appendToJson(result, "chat", parseGenericChat(object->chat));
+ appendToJson(result, "chat", parseChat(object->chat));
appendToJson(result, "forward_from", parseUser(object->forwardFrom));
appendToJson(result, "forward_date", object->forwardDate);
appendToJson(result, "reply_to_message", parseMessage(object->replyToMessage));