diff options
author | Arsentiy Milchakov <milcars@mapswithme.com> | 2018-09-14 12:02:32 +0300 |
---|---|---|
committer | Aleksey Belousov <beloal@users.noreply.github.com> | 2018-09-14 15:19:06 +0300 |
commit | 8a44c9afd8537ab3faa102db4267ca3d975c20a9 (patch) | |
tree | bb8ec9b37681e893b719f9969cf8578f3b94cd01 /partners_api | |
parent | 5fdf81c5d4799944dbb94dcc1dc788292aa649b5 (diff) |
[partners_api][rutaxi] review fixes
Diffstat (limited to 'partners_api')
-rw-r--r-- | partners_api/partners_api_tests/rutaxi_tests.cpp | 2 | ||||
-rw-r--r-- | partners_api/rutaxi_api.cpp | 79 |
2 files changed, 30 insertions, 51 deletions
diff --git a/partners_api/partners_api_tests/rutaxi_tests.cpp b/partners_api/partners_api_tests/rutaxi_tests.cpp index 3a7dcdc8ad..aca011d121 100644 --- a/partners_api/partners_api_tests/rutaxi_tests.cpp +++ b/partners_api/partners_api_tests/rutaxi_tests.cpp @@ -122,4 +122,4 @@ UNIT_TEST(RuTaxi_LoadCityMapping) TEST(!item.second.m_currency.empty(), ()); } } -} // namespace
\ No newline at end of file +} // namespace diff --git a/partners_api/rutaxi_api.cpp b/partners_api/rutaxi_api.cpp index 275f9c0d0f..fc617c7349 100644 --- a/partners_api/rutaxi_api.cpp +++ b/partners_api/rutaxi_api.cpp @@ -105,60 +105,39 @@ void Api::GetAvailableProducts(ms::LatLon const & from, ms::LatLon const & to, auto const baseUrl = m_baseUrl; auto const & city = cityIdIt->second; - using ObjectPtr = std::shared_ptr<Object>; - - ObjectPtr fromObj = std::make_shared<Object>(); - ObjectPtr toObj = std::make_shared<Object>(); - auto errorOnPreviousStep = std::make_shared<bool>(false); - - auto const getNearObject = - [city, baseUrl, errorOnPreviousStep, errorFn](ms::LatLon const & pos, ObjectPtr & dst) + GetPlatform().RunTask(Platform::Thread::Network, [from, to, city, baseUrl, successFn, errorFn]() { - if (*errorOnPreviousStep) - return; - - std::string httpResult; - if (!RawApi::GetNearObject(pos, city.m_id, httpResult, baseUrl)) - { - errorFn(ErrorCode::RemoteError); - *errorOnPreviousStep = true; - return; - } - - Object result; - try - { - MakeNearObject(httpResult, result); - } - catch (my::Json::Exception const & e) + auto const getNearObject = [&city, &baseUrl, &errorFn](ms::LatLon const & pos, Object & dst) { - errorFn(ErrorCode::NoProducts); - *errorOnPreviousStep = true; - LOG(LERROR, (e.what(), httpResult)); - return; - } - - *dst = result; - }; - - GetPlatform().RunTask(Platform::Thread::Network, [getNearObject, from, fromObj]() mutable - { - getNearObject(from, fromObj); - }); - - GetPlatform().RunTask(Platform::Thread::Network, [getNearObject, to, toObj]() mutable - { - getNearObject(to, toObj); - }); - - GetPlatform().RunTask(Platform::Thread::Network, - [fromObj, toObj, city, baseUrl, errorOnPreviousStep, successFn, errorFn]() - { - if (*errorOnPreviousStep) + std::string httpResult; + if (!RawApi::GetNearObject(pos, city.m_id, httpResult, baseUrl)) + { + errorFn(ErrorCode::RemoteError); + return false; + } + + try + { + MakeNearObject(httpResult, dst); + } + catch (my::Json::Exception const & e) + { + errorFn(ErrorCode::NoProducts); + LOG(LERROR, (e.what(), httpResult)); + return false; + } + + return true; + }; + + Object fromObj; + Object toObj; + + if (!getNearObject(from, fromObj) || !getNearObject(to, toObj)) return; std::string result; - if (!RawApi::GetCost(*fromObj, *toObj, city.m_id, result, baseUrl)) + if (!RawApi::GetCost(fromObj, toObj, city.m_id, result, baseUrl)) { errorFn(ErrorCode::RemoteError); return; @@ -167,7 +146,7 @@ void Api::GetAvailableProducts(ms::LatLon const & from, ms::LatLon const & to, std::vector<Product> products; try { - MakeProducts(result, *fromObj, *toObj, city, products); + MakeProducts(result, fromObj, toObj, city, products); } catch (my::Json::Exception const & e) { |