diff --git a/configure.sh b/configure.sh index 5a0c558e51..716f3b26f4 100755 --- a/configure.sh +++ b/configure.sh @@ -61,8 +61,7 @@ else #define TRAFFIC_DATA_BASE_URL "" #define LOCAL_ADS_SERVER_URL "" #define LOCAL_ADS_STATISTICS_SERVER_URL "" -#define LOCAL_ADS_START_COMPANY_PAGE_HOST "" -#define LOCAL_ADS_STATISTICS_PAGE_HOST "" +#define LOCAL_ADS_COMPANY_PAGE_URL "" ' > "$PRIVATE_HEADER" echo 'ext { spropStoreFile = "../tools/android/debug.keystore" diff --git a/local_ads/config.hpp b/local_ads/config.hpp index 89f86284c9..3329ad4472 100644 --- a/local_ads/config.hpp +++ b/local_ads/config.hpp @@ -1,4 +1,7 @@ #pragma once // Use local ads servers for development. -#define DEV_LOCAL_ADS_SERVER +//#define DEV_LOCAL_ADS_SERVER + +// Use stage local ads servers. +#define STAGE_LOCAL_ADS_SERVER diff --git a/map/framework.cpp b/map/framework.cpp index 2cf279d2ef..3b73052a47 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -934,16 +934,10 @@ void Framework::FillInfoFromFeatureType(FeatureType const & ft, place_page::Info if (m_localAdsManager.IsSupportedType(info.GetTypes())) { - if (m_localAdsManager.Contains(ft.GetID())) - { - info.m_localAdsStatus = place_page::LocalAdsStatus::Customer; - info.m_localAdsUrl = m_localAdsManager.GetShowStatisticUrl(); - } - else - { - info.m_localAdsStatus = place_page::LocalAdsStatus::Candidate; - info.m_localAdsUrl = m_localAdsManager.GetStartCompanyUrl(); - } + info.m_localAdsUrl = m_localAdsManager.GetCompanyUrl(ft.GetID()); + info.m_localAdsStatus = m_localAdsManager.Contains(ft.GetID()) + ? place_page::LocalAdsStatus::Customer + : place_page::LocalAdsStatus::Candidate; } else { diff --git a/map/local_ads_manager.cpp b/map/local_ads_manager.cpp index d3d48e4425..6a89c44981 100644 --- a/map/local_ads_manager.cpp +++ b/map/local_ads_manager.cpp @@ -32,6 +32,7 @@ namespace { std::string const kServerUrl = LOCAL_ADS_SERVER_URL; +std::string const kCampaignPageUrl = LOCAL_ADS_COMPANY_PAGE_URL; std::string const kCampaignFile = "local_ads_campaigns.dat"; std::string const kLocalAdsSymbolsFile = "local_ads_symbols.txt"; @@ -64,21 +65,20 @@ std::chrono::steady_clock::time_point Now() return std::chrono::steady_clock::now(); } -std::string MakeRemoteURL(MwmSet::MwmId const & mwmId) +std::string MakeCampaignDownloadingURL(MwmSet::MwmId const & mwmId) { if (kServerUrl.empty() || !mwmId.IsAlive()) return {}; std::ostringstream ss; - ss << kServerUrl << "/"; - ss << mwmId.GetInfo()->GetVersion() << "/"; - ss << UrlEncode(mwmId.GetInfo()->GetCountryName()) << ".ads"; + ss << kServerUrl << "/" << mwmId.GetInfo()->GetVersion() << "/" + << UrlEncode(mwmId.GetInfo()->GetCountryName()) << ".ads"; return ss.str(); } std::vector DownloadCampaign(MwmSet::MwmId const & mwmId) { - std::string const url = MakeRemoteURL(mwmId); + std::string const url = MakeCampaignDownloadingURL(mwmId); if (url.empty()) return {}; @@ -98,11 +98,12 @@ df::CustomSymbols ParseCampaign(std::vector const & rawData, MwmSet::Mw auto campaigns = local_ads::Deserialize(rawData); for (local_ads::Campaign const & campaign : campaigns) { - if (Now() > timestamp + std::chrono::hours(24 * campaign.m_daysBeforeExpired)) + std::string const iconName = campaign.GetIconName(); + auto const expiration = timestamp + std::chrono::hours(24 * campaign.m_daysBeforeExpired); + if (iconName.empty() || Now() > expiration) continue; - symbols.insert( - std::make_pair(FeatureID(mwmId, campaign.m_featureId), - df::CustomSymbol(campaign.GetIconName(), campaign.m_priorityBit))); + symbols.insert(std::make_pair(FeatureID(mwmId, campaign.m_featureId), + df::CustomSymbol(iconName, campaign.m_priorityBit))); } return symbols; @@ -142,12 +143,22 @@ std::vector SerializeLocalAdsToJSON(std::list const & return result; } #endif + +std::string MakeCampaignPageURL(FeatureID const & featureId) +{ + if (kCampaignPageUrl.empty() || !featureId.m_mwmId.IsAlive()) + return {}; + + std::ostringstream ss; + ss << kCampaignPageUrl << "/" << featureId.m_mwmId.GetInfo()->GetVersion() << "/" + << UrlEncode(featureId.m_mwmId.GetInfo()->GetCountryName()) << "/" << featureId.m_index; + return ss.str(); +} } // namespace LocalAdsManager::LocalAdsManager(GetMwmsByRectFn const & getMwmsByRectFn, - GetMwmIdByName const & getMwmIdByName) - : m_getMwmsByRectFn(getMwmsByRectFn) - , m_getMwmIdByNameFn(getMwmIdByName) + GetMwmIdByName const & getMwmIdByName) + : m_getMwmsByRectFn(getMwmsByRectFn), m_getMwmIdByNameFn(getMwmIdByName) { CHECK(m_getMwmsByRectFn != nullptr, ()); CHECK(m_getMwmIdByNameFn != nullptr, ()); @@ -458,9 +469,7 @@ bool LocalAdsManager::IsSupportedType(feature::TypesHolder const & types) const return m_supportedTypes.Contains(types); } -std::string LocalAdsManager::GetStartCompanyUrl() const +std::string LocalAdsManager::GetCompanyUrl(FeatureID const & featureId) const { - return LOCAL_ADS_START_COMPANY_PAGE_HOST; + return MakeCampaignPageURL(featureId); } - -std::string LocalAdsManager::GetShowStatisticUrl() const { return LOCAL_ADS_STATISTICS_PAGE_HOST; } diff --git a/map/local_ads_manager.hpp b/map/local_ads_manager.hpp index 05cd65d261..0740fbd2f6 100644 --- a/map/local_ads_manager.hpp +++ b/map/local_ads_manager.hpp @@ -59,8 +59,7 @@ public: bool Contains(FeatureID const & featureId) const; bool IsSupportedType(feature::TypesHolder const & types) const; - std::string GetStartCompanyUrl() const; - std::string GetShowStatisticUrl() const; + std::string GetCompanyUrl(FeatureID const & featureId) const; private: enum class RequestType