From 009c3ec70b134b32d633f8c0975f34488ba0a830 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Mon, 25 Sep 2017 17:46:02 +0300 Subject: [PATCH] Refactoring of error processing in Local experts API. --- partners_api/locals_api.cpp | 34 +++++++++++----------------------- partners_api/locals_api.hpp | 11 ++--------- 2 files changed, 13 insertions(+), 32 deletions(-) diff --git a/partners_api/locals_api.cpp b/partners_api/locals_api.cpp index 2ee0f995be..46b1969b6f 100644 --- a/partners_api/locals_api.cpp +++ b/partners_api/locals_api.cpp @@ -25,15 +25,13 @@ bool CheckJsonArray(json_t const * data) return json_is_array(data) && json_array_size(data) > 0; } -void ParseError(std::string const & src, ErrorCode & errorCode, std::string & message) +void ParseError(std::string const & src, int & errorCode, std::string & message) { message.clear(); + errorCode = 0; my::Json root(src.c_str()); - int code = 0; - FromJSONObject(root.get(), "code", code); + FromJSONObject(root.get(), "code", errorCode); FromJSONObject(root.get(), "message", message); - // TODO(darina): Process real error codes. - errorCode = code > 0 ? ErrorCode::NoLocals : ErrorCode::RemoteError; } void ParseLocals(std::string const & src, std::vector & locals, @@ -86,10 +84,11 @@ bool RawApi::Get(double lat, double lon, std::string const & lang, size_t result platform::HttpClient request(ostream.str()); request.SetHttpMethod("GET"); - if (request.RunHttpRequest() && request.ErrorCode() == 200) + if (request.RunHttpRequest()) { result = request.ServerResponse(); - return true; + if (request.ErrorCode() == 200) + return true; } return false; } @@ -113,7 +112,7 @@ uint64_t Api::GetLocals(double lat, double lon, std::string const & lang, { try { - ErrorCode errorCode; + int errorCode; std::string errorMessage; ParseError(result, errorCode, errorMessage); LOG(LWARNING, ("Locals request failed:", errorCode, errorMessage)); @@ -121,8 +120,8 @@ uint64_t Api::GetLocals(double lat, double lon, std::string const & lang, } catch (my::Json::Exception const & e) { - LOG(LWARNING, ("Unknown error:", e.Msg())); - return errorFn(id, ErrorCode::UnknownError, "Unknown error: " + e.Msg()); + LOG(LWARNING, ("Unknown error:", e.Msg(), ", response:", result)); + return errorFn(id, kUnknownErrorCode, "Unknown error: " + e.Msg()); } } @@ -135,8 +134,8 @@ uint64_t Api::GetLocals(double lat, double lon, std::string const & lang, } catch (my::Json::Exception const & e) { - LOG(LWARNING, ("Locals response parsing failed:", e.Msg())); - errorFn(id, ErrorCode::UnknownError, "Response parsing failed: " + e.Msg()); + LOG(LWARNING, ("Locals response parsing failed:", e.Msg(), ", response:", result)); + errorFn(id, kUnknownErrorCode, "Response parsing failed: " + e.Msg()); } successFn(id, locals, pageNumber, resultsOnPage, hasPreviousPage, hasNextPage); @@ -144,17 +143,6 @@ uint64_t Api::GetLocals(double lat, double lon, std::string const & lang, return id; } -std::string DebugPrint(ErrorCode code) -{ - switch (code) - { - case ErrorCode::NoLocals: return "NoLocals"; - case ErrorCode::RemoteError: return "RemoteError"; - case ErrorCode::UnknownError: return "UnknownError"; - } - return "Unknown error code"; -} - std::string DebugPrint(LocalExpert const & localExpert) { std::ostringstream out; diff --git a/partners_api/locals_api.hpp b/partners_api/locals_api.hpp index fc0e1d1b58..21015456b8 100644 --- a/partners_api/locals_api.hpp +++ b/partners_api/locals_api.hpp @@ -16,13 +16,6 @@ public: size_t resultsOnPage, size_t pageNumber, std::string & result); }; -enum class ErrorCode -{ - NoLocals, - RemoteError, - UnknownError -}; - struct LocalExpert { size_t m_id; @@ -43,12 +36,13 @@ struct LocalExpert using LocalsSuccessCallback = platform::SafeCallback const & locals, size_t pageNumber, size_t countPerPage, bool hasPreviousPage, bool hasNextPage)>; -using LocalsErrorCallback = platform::SafeCallback; class Api { public: + static int constexpr kUnknownErrorCode = 0; static std::string GetLocalsPageUrl(); uint64_t GetLocals(double lat, double lon, std::string const & lang, size_t resultsOnPage, size_t pageNumber, @@ -59,6 +53,5 @@ private: uint64_t m_requestId = 0; }; -std::string DebugPrint(ErrorCode code); std::string DebugPrint(LocalExpert const & localExpert); } // namespace locals