diff --git a/src/BotApi.cpp b/src/BotApi.cpp index 3eb9a7b..db091ee 100644 --- a/src/BotApi.cpp +++ b/src/BotApi.cpp @@ -33,7 +33,7 @@ public: rapidjson::Document doc; doc.Parse(response.c_str()); - parseResponse(doc); + checkResponse(doc); return *parseUser(doc, "result", REQUIRED); } @@ -71,7 +71,7 @@ public: doc.Parse(response.c_str()); /// \todo Parse message - parseResponse(doc); + checkResponse(doc); MessagePtr message = parseMessage(doc, "result", REQUIRED); } @@ -92,7 +92,7 @@ public: doc.Parse(response.c_str()); /// \todo Parse message - parseResponse(doc); + checkResponse(doc); MessagePtr message = parseMessage(doc, "result", REQUIRED); } @@ -127,7 +127,7 @@ public: doc.Parse(response.c_str()); /// \todo Parse message - parseResponse(doc); + checkResponse(doc); MessagePtr message = parseMessage(doc, "result", REQUIRED); } diff --git a/src/JsonObjects.cpp b/src/JsonObjects.cpp index b2c82fa..a73ddfe 100644 --- a/src/JsonObjects.cpp +++ b/src/JsonObjects.cpp @@ -266,19 +266,14 @@ namespace telebotxx return nullptr; } - const rapidjson::Value& parseResponse(const rapidjson::Document& doc) + void checkResponse(const rapidjson::Document& doc) { if (!doc.IsObject()) throw ParseError("Object expected"); // Get status bool ok = parse(doc, "ok", REQUIRED); - if (ok) - { - bool found; - return parseObject(doc, "result", REQUIRED, found); - } - else + if (!ok) { int code = parse(doc, "error_code", REQUIRED); std::string description(parse(doc, "description", REQUIRED)); diff --git a/src/JsonObjects.hpp b/src/JsonObjects.hpp index fcfc526..c26812c 100644 --- a/src/JsonObjects.hpp +++ b/src/JsonObjects.hpp @@ -63,10 +63,11 @@ namespace telebotxx /// \return pointer to Message std::unique_ptr parseMessage(const rapidjson::Value& parent, const char* name, bool required); - /// \brief Parse JSON response + /// \brief Check JSON response + /// + /// Throws an exception if error code recieved. /// \param doc reference to JSON document - /// \return reference to 'result' value - const rapidjson::Value& parseResponse(const rapidjson::Document& doc); + void checkResponse(const rapidjson::Document& doc); } #endif // TELEBOTXX_JSON_OBJECTS_HPP