diff options
author | Arsentiy Milchakov <milcars@mapswithme.com> | 2019-06-11 13:15:17 +0300 |
---|---|---|
committer | Tatiana Yan <tatiana.kondakova@gmail.com> | 2019-06-13 16:15:51 +0300 |
commit | 68c33fc33a63aedb11535918f7d109f3298d85fc (patch) | |
tree | e4576263e6405ad5eb5a86f2a41882046c6fe7a0 /partners_api | |
parent | 580839ff032f40434864e3ecdc95ee9b66fd0c0e (diff) |
[promo][storage] Load promo city ids from countries.txt
Diffstat (limited to 'partners_api')
-rw-r--r-- | partners_api/downloader_promo.cpp | 18 | ||||
-rw-r--r-- | partners_api/downloader_promo.hpp | 14 | ||||
-rw-r--r-- | partners_api/partners_api_tests/promo_tests.cpp | 5 | ||||
-rw-r--r-- | partners_api/promo_api.cpp | 28 | ||||
-rw-r--r-- | partners_api/promo_api.hpp | 11 |
5 files changed, 51 insertions, 25 deletions
diff --git a/partners_api/downloader_promo.cpp b/partners_api/downloader_promo.cpp index df887e7208..acad44b48e 100644 --- a/partners_api/downloader_promo.cpp +++ b/partners_api/downloader_promo.cpp @@ -1,19 +1,31 @@ #include "partners_api/downloader_promo.hpp" #include "partners_api/megafon_countries.hpp" +#include "partners_api/promo_api.hpp" + +#include "storage/storage.hpp" + +#include "base/string_utils.hpp" namespace promo { // static DownloaderPromo::Banner DownloaderPromo::GetBanner(storage::Storage const & storage, - std::string const & mwmId, + Api const & promoApi, std::string const & mwmId, std::string const & currentLocale, bool hasRemoveAdsSubscription) { if (!hasRemoveAdsSubscription && ads::HasMegafonDownloaderBanner(storage, mwmId, currentLocale)) - return {DownloaderPromo::Type::Megafon, ads::GetMegafonDownloaderBannerUrl()}; + return {Type::Megafon, ads::GetMegafonDownloaderBannerUrl()}; + + auto const & cities = storage.GetPromoCatalogCities(); + auto const it = cities.find(mwmId); - // TODO: add bookmark catalog banner. + if (it != cities.cend()) + { + auto const id = strings::to_string(it->second.GetEncodedId()); + return {Type::BookmarkCatalog, promoApi.GetPromoLinkForDownloader(id, currentLocale)}; + } return {}; } diff --git a/partners_api/downloader_promo.hpp b/partners_api/downloader_promo.hpp index 74d680bfcb..7225decda7 100644 --- a/partners_api/downloader_promo.hpp +++ b/partners_api/downloader_promo.hpp @@ -1,12 +1,17 @@ #pragma once -#include "storage/storage.hpp" - #include <cstdint> #include <string> +namespace storage +{ +class Storage; +} + namespace promo { +class Api; + class DownloaderPromo { public: @@ -30,7 +35,8 @@ public: std::string m_url; }; - static Banner GetBanner(storage::Storage const & storage, std::string const & mwmId, - std::string const & currentLocale, bool hasRemoveAdsSubscription); + static Banner GetBanner(storage::Storage const & storage, Api const & promoApi, + std::string const & mwmId, std::string const & currentLocale, + bool hasRemoveAdsSubscription); }; } // namespace promo diff --git a/partners_api/partners_api_tests/promo_tests.cpp b/partners_api/partners_api_tests/promo_tests.cpp index 0492495a07..abe47cde64 100644 --- a/partners_api/partners_api_tests/promo_tests.cpp +++ b/partners_api/partners_api_tests/promo_tests.cpp @@ -138,10 +138,11 @@ UNIT_CLASS_TEST(ScopedEyeWithAsyncGuiThread, Promo_GetCityGallery) { promo::Api api("http://localhost:34568/"); api.SetDelegate(std::make_unique<DelegateForTesting>()); + auto const lang = "en"; { promo::CityGallery result{}; - api.GetCityGallery(kTestId, [&result](promo::CityGallery const & gallery) + api.GetCityGallery(kTestId, lang, [&result](promo::CityGallery const & gallery) { result = gallery; testing::Notify(); @@ -157,7 +158,7 @@ UNIT_CLASS_TEST(ScopedEyeWithAsyncGuiThread, Promo_GetCityGallery) { promo::CityGallery result{}; m2::PointD pt; - api.GetCityGallery(pt, [&result](promo::CityGallery const & gallery) + api.GetCityGallery(pt, lang, [&result](promo::CityGallery const & gallery) { result = gallery; testing::Notify(); diff --git a/partners_api/promo_api.cpp b/partners_api/promo_api.cpp index b138d1ad39..56987681b2 100644 --- a/partners_api/promo_api.cpp +++ b/partners_api/promo_api.cpp @@ -101,7 +101,8 @@ std::string MakeCityGalleryUrl(std::string const & baseUrl, std::string const & } void GetPromoCityGalleryImpl(std::string const & baseUrl, std::string const & id, - CityGalleryCallback const & onSuccess, OnError const & onError) + std::string const & lang, CityGalleryCallback const & onSuccess, + OnError const & onError) { ASSERT(!baseUrl.empty(), ()); ASSERT_EQUAL(baseUrl.back(), '/', ()); @@ -112,13 +113,13 @@ void GetPromoCityGalleryImpl(std::string const & baseUrl, std::string const & id return; } - GetPlatform().RunTask(Platform::Thread::Network, [baseUrl, id, onSuccess, onError]() + GetPlatform().RunTask(Platform::Thread::Network, [baseUrl, id, lang, onSuccess, onError]() { ASSERT(!id.empty(), ()); CityGallery result; std::string httpResult; - if (!WebApi::GetCityGalleryById(baseUrl, id, languages::GetCurrentNorm(), httpResult)) + if (!WebApi::GetCityGalleryById(baseUrl, id, lang, httpResult)) { onError(); return; @@ -183,28 +184,33 @@ bool Api::NeedToShowAfterBooking() const return NeedToShowImpl(m_bookingPromoAwaitingForId, eye::Eye::Instance().GetInfo()); } -std::string Api::GetPromoLinkAfterBooking() const +std::string Api::GetPromoLinkAfterBooking(std::string const & lang) const { auto const eyeInfo = eye::Eye::Instance().GetInfo(); if (!NeedToShowImpl(m_bookingPromoAwaitingForId, eyeInfo)) return ""; - return MakeCityGalleryUrl(m_baseUrl, m_bookingPromoAwaitingForId, languages::GetCurrentNorm()); + return MakeCityGalleryUrl(m_baseUrl, m_bookingPromoAwaitingForId, lang); } -void Api::GetCityGallery(std::string const & id, CityGalleryCallback const & onSuccess, - OnError const & onError) const +std::string Api::GetPromoLinkForDownloader(std::string const & id, std::string const & lang) const { - GetPromoCityGalleryImpl(m_baseUrl, id, onSuccess, onError); + return MakeCityGalleryUrl(m_baseUrl, id, lang); } -void Api::GetCityGallery(m2::PointD const & point, CityGalleryCallback const & onSuccess, - OnError const & onError) const +void Api::GetCityGallery(std::string const & id, std::string const & lang, + CityGalleryCallback const & onSuccess, OnError const & onError) const +{ + GetPromoCityGalleryImpl(m_baseUrl, id, lang, onSuccess, onError); +} + +void Api::GetCityGallery(m2::PointD const & point, std::string const & lang, + CityGalleryCallback const & onSuccess, OnError const & onError) const { CHECK(m_delegate, ()); - GetPromoCityGalleryImpl(m_baseUrl, m_delegate->GetCityId(point), onSuccess, onError); + GetPromoCityGalleryImpl(m_baseUrl, m_delegate->GetCityId(point), lang, onSuccess, onError); } void Api::OnMapObjectEvent(eye::MapObject const & mapObject) diff --git a/partners_api/promo_api.hpp b/partners_api/promo_api.hpp index ff9bd23f9c..33f20941cd 100644 --- a/partners_api/promo_api.hpp +++ b/partners_api/promo_api.hpp @@ -68,11 +68,12 @@ public: void SetDelegate(std::unique_ptr<Delegate> delegate); void OnEnterForeground(); bool NeedToShowAfterBooking() const; - std::string GetPromoLinkAfterBooking() const; - void GetCityGallery(std::string const & id, CityGalleryCallback const & onSuccess, - OnError const & onError) const; - void GetCityGallery(m2::PointD const & point, CityGalleryCallback const & onSuccess, - OnError const & onError) const; + std::string GetPromoLinkAfterBooking(std::string const & lang) const; + std::string GetPromoLinkForDownloader(std::string const & id, std::string const & lang) 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, + CityGalleryCallback const & onSuccess, OnError const & onError) const; // eye::Subscriber overrides: void OnMapObjectEvent(eye::MapObject const & poi) override; |