From 6f6f55e55493adf526392cb9363ec23187124ca6 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Tue, 18 Jun 2019 20:24:32 +0300 Subject: [PATCH] [promo] signed ids are supported + GetMoreUrl method --- .../partners_api_tests/promo_tests.cpp | 4 +++- partners_api/promo_api.cpp | 20 ++++++++++++++++++- partners_api/promo_api.hpp | 1 + tools/python/ResponseProvider.py | 2 +- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/partners_api/partners_api_tests/promo_tests.cpp b/partners_api/partners_api_tests/promo_tests.cpp index abe47cde64..f9c0092871 100644 --- a/partners_api/partners_api_tests/promo_tests.cpp +++ b/partners_api/partners_api_tests/promo_tests.cpp @@ -16,7 +16,9 @@ using namespace platform::tests_support; namespace { -std::string const kTestId = "TestId"; +// It should be compatible with test id on test server side at tools/python/ResponseProvider.py:150. +// On server side this value is negative because of the prod server does not support unsigned values. +std::string const kTestId = "13835058055282357840"; class ScopedEyeWithAsyncGuiThread : public AsyncGuiThread { diff --git a/partners_api/promo_api.cpp b/partners_api/promo_api.cpp index 05c1cd8494..51131e108a 100644 --- a/partners_api/promo_api.cpp +++ b/partners_api/promo_api.cpp @@ -9,6 +9,7 @@ #include "platform/settings.hpp" #include "base/assert.hpp" +#include "base/string_utils.hpp" #include #include @@ -93,13 +94,22 @@ void ParseCityGallery(std::string const & src, promo::CityGallery & result) result.m_moreUrl.insert(0, BOOKMARKS_CATALOG_FRONT_URL); } +std::string ToSignedId(std::string const & id) +{ + uint64_t unsignedId; + if (!strings::to_uint64(id, unsignedId)) + unsignedId = 0; + + return strings::to_string(static_cast(unsignedId)); +} + std::string MakeCityGalleryUrl(std::string const & baseUrl, std::string const & id, std::string const & lang) { ASSERT(!baseUrl.empty(), ()); ASSERT_EQUAL(baseUrl.back(), '/', ()); - return baseUrl + "gallery/v1/city/" + id + "/?lang=" + lang; + return baseUrl + "gallery/v1/city/" + ToSignedId(id) + "/?lang=" + lang; } void GetPromoCityGalleryImpl(std::string const & baseUrl, std::string const & id, @@ -201,6 +211,14 @@ std::string Api::GetPromoLinkForDownloader(std::string const & id, std::string c return MakeCityGalleryUrl(m_baseUrl, id, lang); } +std::string Api::GetMoreUrl(std::string const & id) const +{ + ASSERT(!m_baseUrl.empty(), ()); + ASSERT_EQUAL(m_baseUrl.back(), '/', ()); + + return m_baseUrl + "v2/mobilefront/city/" + ToSignedId(id); +} + void Api::GetCityGallery(std::string const & id, std::string const & lang, CityGalleryCallback const & onSuccess, OnError const & onError) const { diff --git a/partners_api/promo_api.hpp b/partners_api/promo_api.hpp index 33f20941cd..d7041e1fb1 100644 --- a/partners_api/promo_api.hpp +++ b/partners_api/promo_api.hpp @@ -70,6 +70,7 @@ public: bool NeedToShowAfterBooking() const; std::string GetPromoLinkAfterBooking(std::string const & lang) const; std::string GetPromoLinkForDownloader(std::string const & id, std::string const & lang) const; + std::string GetMoreUrl(std::string const & id) const; void GetCityGallery(std::string const & id, std::string const & lang, CityGalleryCallback const & onSuccess, OnError const & onError) const; void GetCityGallery(m2::PointD const & point, std::string const & lang, diff --git a/tools/python/ResponseProvider.py b/tools/python/ResponseProvider.py index ee094439cf..0d3197ecfb 100644 --- a/tools/python/ResponseProvider.py +++ b/tools/python/ResponseProvider.py @@ -147,7 +147,7 @@ class ResponseProvider: "/partners/taxi_info": self.partners_yandex_taxi_info, "/partners/get-offers-in-bbox/": self.partners_rent_nearby, "/partners/CalculateByCoords": self.partners_calculate_by_coords, - "/gallery/v1/city/TestId/": self.promo_gallery_city, + "/gallery/v1/city/-4611686018427193776/": self.promo_gallery_city, }[url]() except: return self.test_404()