Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2017-09-25 17:46:02 +0300
committerRoman Kuznetsov <r.kuznetsow@gmail.com>2017-10-05 15:22:53 +0300
commit009c3ec70b134b32d633f8c0975f34488ba0a830 (patch)
tree92010952e26bc1ea3eff7ecbc476a1afec10324a
parentab78207f61d0a4dc4d31dc9597934e5dbc5411f8 (diff)
Refactoring of error processing in Local experts API.beta-1033
-rw-r--r--partners_api/locals_api.cpp34
-rw-r--r--partners_api/locals_api.hpp11
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<LocalExpert> & 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<void(uint64_t id, std::vector<LocalExpert> const & locals,
size_t pageNumber, size_t countPerPage,
bool hasPreviousPage, bool hasNextPage)>;
-using LocalsErrorCallback = platform::SafeCallback<void(uint64_t id, ErrorCode errorCode,
+using LocalsErrorCallback = platform::SafeCallback<void(uint64_t id, int errorCode,
std::string const & errorMessage)>;
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