#pragma once #include "partners_api/ads_base.hpp" #include "partners_api/banner.hpp" #include #include #include namespace feature { class TypesHolder; } namespace ads { class Engine { public: Engine(); bool HasBanner(feature::TypesHolder const & types, storage::CountriesVec const & countryIds, std::string const & userLanguage) const; std::vector GetBanners(feature::TypesHolder const & types, storage::CountriesVec const & countryIds, std::string const & userLanguage) const; void DisableAdProvider(Banner::Type const type, Banner::Place const place); bool HasSearchBanner() const; std::vector GetSearchBanners() const; private: using ContainerPtr = std::unique_ptr; struct ContainerItem { ContainerItem(Banner::Type type, ContainerPtr && container) : m_type(type), m_container(std::move(container)) { } bool m_enabled = true; Banner::Type m_type; ContainerPtr m_container; }; void SetAdProviderEnabled(std::vector & banners, Banner::Type const type, bool const isEnabled); std::vector m_banners; std::vector m_searchBanners; }; } // namespace ads