From fb06901b6739e2e6f1bbcea73d0aa6c97b056b1b Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Mon, 7 Sep 2020 14:56:20 +0300 Subject: [PATCH] [core][taxi] yango taxi is added --- data/taxi_places/yango.json | 44 +++++++++++++++++++++++++++++ partners_api/CMakeLists.txt | 2 ++ partners_api/taxi_engine.cpp | 2 ++ partners_api/taxi_places_loader.cpp | 1 + partners_api/taxi_provider.hpp | 2 ++ partners_api/yango_api.cpp | 17 +++++++++++ partners_api/yango_api.hpp | 17 +++++++++++ tools/python/jsons.py | 5 ++++ 8 files changed, 90 insertions(+) create mode 100644 data/taxi_places/yango.json create mode 100644 partners_api/yango_api.cpp create mode 100644 partners_api/yango_api.hpp diff --git a/data/taxi_places/yango.json b/data/taxi_places/yango.json new file mode 100644 index 0000000000..3046867590 --- /dev/null +++ b/data/taxi_places/yango.json @@ -0,0 +1,44 @@ +{ + "disabled": { + "countries": [], + "mwms": [] + }, + "enabled": { + "countries": [ + { + "cities": [ + "Accra" + ], + "id": "Ghana" + }, + { + "cities": [ + "Abidjan" + ], + "id": "Cote dIvoire" + }, + { + "cities": [ + "Bucharest" + ], + "id": "Romania" + }, + { + "cities": [ + "Helsinki" + ], + "id": "Finland" + }, + { + "cities": [ + "Haifa", + "Ashkelon", + "Be'er Sheva", + "Tel Aviv-Yafo" + ], + "id": "Israel Region" + } + ], + "mwms": [] + } +} \ No newline at end of file diff --git a/partners_api/CMakeLists.txt b/partners_api/CMakeLists.txt index c21b971052..1a69b6d30a 100644 --- a/partners_api/CMakeLists.txt +++ b/partners_api/CMakeLists.txt @@ -77,6 +77,8 @@ set( utm.hpp yandex_api.cpp yandex_api.hpp + yango_api.cpp + yango_api.hpp ) omim_add_library(${PROJECT_NAME} ${SRC}) diff --git a/partners_api/taxi_engine.cpp b/partners_api/taxi_engine.cpp index 571503ab3e..9c9049146c 100644 --- a/partners_api/taxi_engine.cpp +++ b/partners_api/taxi_engine.cpp @@ -6,6 +6,7 @@ #include "partners_api/taxi_places_loader.hpp" #include "partners_api/uber_api.hpp" #include "partners_api/yandex_api.hpp" +#include "partners_api/yango_api.hpp" #include "geometry/latlon.hpp" #include "geometry/mercator.hpp" @@ -120,6 +121,7 @@ Engine::Engine(std::vector urls /* = {} */) { AddApi(urls, Provider::Type::Yandex); AddApi(urls, Provider::Type::Freenow); + AddApi(urls, Provider::Type::Yango); } void Engine::SetDelegate(std::unique_ptr delegate) diff --git a/partners_api/taxi_places_loader.cpp b/partners_api/taxi_places_loader.cpp index 9279ad3d5b..94da6dc8bf 100644 --- a/partners_api/taxi_places_loader.cpp +++ b/partners_api/taxi_places_loader.cpp @@ -55,6 +55,7 @@ std::string Loader::GetFileNameByProvider(Provider::Type const type) case Provider::Type::Uber: return "taxi_places/uber.json"; case Provider::Type::Yandex: return "taxi_places/yandex.json"; case Provider::Type::Freenow: return "taxi_places/freenow.json"; + case Provider::Type::Yango: return "taxi_places/yango.json"; case Provider::Type::Count: LOG(LERROR, ("Incorrect taxi provider")); return ""; } UNREACHABLE(); diff --git a/partners_api/taxi_provider.hpp b/partners_api/taxi_provider.hpp index f319f881dc..23f2b2cfca 100644 --- a/partners_api/taxi_provider.hpp +++ b/partners_api/taxi_provider.hpp @@ -26,6 +26,7 @@ public: Maxim, Rutaxi, Freenow, + Yango, Count }; @@ -84,6 +85,7 @@ inline std::string DebugPrint(Provider::Type type) case Provider::Type::Maxim: return "Maxim"; case Provider::Type::Rutaxi: return "Rutaxi"; case Provider::Type::Freenow: return "Freenow"; + case Provider::Type::Yango: return "Yango"; case Provider::Type::Count: ASSERT(false, ()); return ""; } UNREACHABLE(); diff --git a/partners_api/yango_api.cpp b/partners_api/yango_api.cpp new file mode 100644 index 0000000000..59b07e9ebe --- /dev/null +++ b/partners_api/yango_api.cpp @@ -0,0 +1,17 @@ +#include "partners_api/yango_api.hpp" + +namespace taxi::yango +{ +RideRequestLinks Api::GetRideRequestLinks(std::string const & productId, ms::LatLon const & from, + ms::LatLon const & to) const +{ + std::ostringstream link; + + link << "https://2187871.redirect.appmetrica.yandex.com/route?start-lat=" << from.m_lat + << "&start-lon=" << from.m_lon << "&end-lat=" << to.m_lat << "&end-lon=" << to.m_lon + << "&utm_source=mapsme&utm_medium=none&ref=8d20bf0f9e4749c48822358cdaf6a6c7" + "&appmetrica_tracking_id=1179283486394045767&level=50"; + + return {link.str(), link.str()};; +} +} // namespace taxi::yango diff --git a/partners_api/yango_api.hpp b/partners_api/yango_api.hpp new file mode 100644 index 0000000000..2bbaf546e5 --- /dev/null +++ b/partners_api/yango_api.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "partners_api/taxi_base.hpp" +#include "partners_api/yandex_api.hpp" + +namespace taxi::yango +{ +class Api : public yandex::Api +{ +public: + explicit Api(std::string const & baseUrl = yandex::kTaxiInfoUrl) : yandex::Api(baseUrl) {} + + /// Returns link which allows you to launch the Yandex app. + RideRequestLinks GetRideRequestLinks(std::string const & productId, ms::LatLon const & from, + ms::LatLon const & to) const override; +}; +} // namespace taxi::yango diff --git a/tools/python/jsons.py b/tools/python/jsons.py index b6a01590b9..f3b06eedc3 100644 --- a/tools/python/jsons.py +++ b/tools/python/jsons.py @@ -299,30 +299,35 @@ PARTNERS_TAXI_INFO = """ "distance": 6888.846981748964, "options": [ { + "class_level": 50, "class_name": "econom", "min_price": 129, "price": 344, "waiting_time": 527.8793726078095 }, { + "class_level": 70, "class_name": "business", "min_price": 239, "price": 504, "waiting_time": 76.37023611385494 }, { + "class_level": 100, "class_name": "comfortplus", "min_price": 239, "price": 557, "waiting_time": 99.0058955445591 }, { + "class_level": 200, "class_name": "minivan", "min_price": 239, "price": 532, "waiting_time": 322.77413167989687 }, { + "class_level": 300, "class_name": "vip", "min_price": 359, "price": 799,