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:
authorDmitry Donskoy <donskdmitry@mail.ru>2018-09-25 14:39:04 +0300
committerAleksandr Zatsepin <alexzatsepin@users.noreply.github.com>2018-09-27 15:40:37 +0300
commitf1d9578140fa22ee38508e8070dd632db590d18f (patch)
treeab8548b04147fe2d3ea8e2c661d08ff9b11ea8ab /partners_api
parenteafd554af589cd572f511711caa0ca3b468d4ecf (diff)
[android] Added excluding/including banners provider from platform runtime
Diffstat (limited to 'partners_api')
-rw-r--r--partners_api/ads_engine.cpp49
-rw-r--r--partners_api/ads_engine.hpp5
-rw-r--r--partners_api/banner.hpp6
3 files changed, 59 insertions, 1 deletions
diff --git a/partners_api/ads_engine.cpp b/partners_api/ads_engine.cpp
index dc22872ebd..a3173636e1 100644
--- a/partners_api/ads_engine.cpp
+++ b/partners_api/ads_engine.cpp
@@ -14,7 +14,6 @@ namespace ads
Engine::Engine()
{
// The banner systems are placed by priority. First has a top priority.
- m_banners.emplace_back(Banner::Type::RB, std::make_unique<Rb>());
m_banners.emplace_back(Banner::Type::Mopub, std::make_unique<Mopub>());
m_searchBanners.emplace_back(Banner::Type::Facebook, std::make_unique<Facebook>());
@@ -84,4 +83,52 @@ std::vector<Banner> Engine::GetSearchBanners() const
return result;
}
+
+void Engine::ExcludeAdProvider(Banner::Type const type)
+{
+ ExcludeAdProviderInternal(m_banners, type);
+ ExcludeAdProviderInternal(m_searchBanners, type);
+}
+
+void Engine::IncludeAdProvider(Banner::Type const type, Banner::Place place)
+{
+ IncludeAdProviderInternal(place == Banner::Place::Search ? m_searchBanners : m_banners, type);
+}
+
+void Engine::ExcludeAdProviderInternal(std::vector<Engine::ContainerItem> & banners, Banner::Type const type)
+{
+ banners.erase(std::remove_if(banners.begin(), banners.end(), [type](ContainerItem const & each)
+ {
+ return each.m_type == type;
+ }), banners.end());
+}
+
+void Engine::IncludeAdProviderInternal(std::vector<ContainerItem> & banners, Banner::Type const type)
+{
+ auto const hasItemIterator = std::find_if(std::begin(banners), std::end(banners), [type](ContainerItem const & each)
+ {
+ return each.m_type == type;
+ });
+
+ if (hasItemIterator != std::end(banners))
+ return;
+
+ switch (type)
+ {
+ case Banner::Type::Facebook :
+ banners.emplace_back(Banner::Type::Facebook, std::make_unique<Facebook>());
+ break;
+ case Banner::Type::RB :
+ banners.emplace_back(Banner::Type::RB, std::make_unique<Rb>());
+ break;
+ case Banner::Type::Mopub :
+ banners.emplace_back(Banner::Type::Mopub, std::make_unique<Mopub>());
+ break;
+ case Banner::Type::Google :
+ banners.emplace_back(Banner::Type::None, std::make_unique<Google>());
+ break;
+ case Banner::Type::None :
+ break;
+ }
+}
} // namespace ads
diff --git a/partners_api/ads_engine.hpp b/partners_api/ads_engine.hpp
index e07578a8c4..c99f98e367 100644
--- a/partners_api/ads_engine.hpp
+++ b/partners_api/ads_engine.hpp
@@ -25,6 +25,8 @@ public:
std::vector<Banner> GetBanners(feature::TypesHolder const & types,
storage::TCountriesVec const & countryIds,
std::string const & userLanguage) const;
+ void IncludeAdProvider(Banner::Type const type, Banner::Place const bannerPlace);
+ void ExcludeAdProvider(Banner::Type type);
bool HasSearchBanner() const;
std::vector<Banner> GetSearchBanners() const;
@@ -42,6 +44,9 @@ private:
ContainerPtr m_container;
};
+ void ExcludeAdProviderInternal(std::vector<ContainerItem> & banners, Banner::Type const type);
+ void IncludeAdProviderInternal(std::vector<ContainerItem> & banners, Banner::Type const type);
+
std::vector<ContainerItem> m_banners;
std::vector<ContainerItem> m_searchBanners;
};
diff --git a/partners_api/banner.hpp b/partners_api/banner.hpp
index 099b38651e..653da797bb 100644
--- a/partners_api/banner.hpp
+++ b/partners_api/banner.hpp
@@ -8,6 +8,12 @@ namespace ads
{
struct Banner
{
+ enum class Place : uint8_t
+ {
+ Search = 0,
+ Default = 1
+ };
+
enum class Type : uint8_t
{
None = 0,