diff --git a/vendor/bat-native-ads/BUILD.gn b/vendor/bat-native-ads/BUILD.gn index b84e557c857c..e1796856d55f 100644 --- a/vendor/bat-native-ads/BUILD.gn +++ b/vendor/bat-native-ads/BUILD.gn @@ -120,10 +120,14 @@ source_set("ads") { "src/bat/ads/internal/catalog_creative_set_info.h", "src/bat/ads/internal/catalog_geo_target_info.cc", "src/bat/ads/internal/catalog_geo_target_info.h", + "src/bat/ads/internal/catalog_day_part_info.cc", + "src/bat/ads/internal/catalog_day_part_info.h", "src/bat/ads/internal/catalog_payload_info.cc", "src/bat/ads/internal/catalog_payload_info.h", "src/bat/ads/internal/catalog_segment_info.cc", "src/bat/ads/internal/catalog_segment_info.h", + "src/bat/ads/internal/catalog_os_info.cc", + "src/bat/ads/internal/catalog_os_info.h", "src/bat/ads/internal/catalog_state.cc", "src/bat/ads/internal/catalog_state.h", "src/bat/ads/internal/catalog_type_info.cc", diff --git a/vendor/bat-native-ads/resources/catalog-schema.json b/vendor/bat-native-ads/resources/catalog-schema.json index 0b1f62b4c745..0d3c0aa0c33b 100755 --- a/vendor/bat-native-ads/resources/catalog-schema.json +++ b/vendor/bat-native-ads/resources/catalog-schema.json @@ -44,24 +44,24 @@ "type": "object", "additionalProperties": false, "required": [ + "priority", "campaignId", "advertiserId", - "name", "startAt", "endAt", "dailyCap", - "budget", "geoTargets", + "dayParts", "creativeSets" ], "properties": { "campaignId": { "type": "string" }, - "advertiserId": { - "type": "string" + "priority": { + "type": "number" }, - "name": { + "advertiserId": { "type": "string" }, "startAt": { @@ -73,8 +73,28 @@ "dailyCap": { "type": "number" }, - "budget": { - "type": "number" + "dayParts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "dow", + "startMinute", + "endMinute" + ], + "properties": { + "dow": { + "type": "string" + }, + "startMinute": { + "type": "number" + }, + "endMinute": { + "type": "number" + } + } + } }, "geoTargets": { "type": "array", @@ -102,25 +122,45 @@ "additionalProperties": false, "required": [ "creativeSetId", - "execution", "perDay", "totalMax", "segments", - "creatives" + "creatives", + "oses" ], "properties": { "creativeSetId": { "type": "string" }, - "execution": { - "type": "string" - }, "perDay": { "type": "number" }, "totalMax": { "type": "number" }, + "conversions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "urlPattern", + "type", + "observationWindow" + ], + "properties": { + "urlPattern": { + "type": "string" + }, + "type": { + "type": "string" + }, + "observationWindow": { + "type": "number" + } + } + } + }, "segments": { "type": "array", "items": { @@ -143,6 +183,25 @@ } } }, + "oses": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "code", + "name" + ], + "properties": { + "code": { + "type": "string" + }, + "name": { + "type": "string" + } + } + } + }, "creatives": { "type": "array", "items": { diff --git a/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.cc b/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.cc index c7a63822f2ae..ba8650c278c5 100644 --- a/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.cc +++ b/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.cc @@ -9,33 +9,33 @@ namespace ads { CampaignInfo::CampaignInfo() : campaign_id(""), + priority(0), name(""), start_at(""), end_at(""), daily_cap(0), - budget(0), advertiser_id(""), geo_targets({}), creative_sets({}) {} CampaignInfo::CampaignInfo(const std::string& campaign_id) : campaign_id(campaign_id), + priority(0), name(""), start_at(""), end_at(""), daily_cap(0), - budget(0), advertiser_id(""), geo_targets({}), creative_sets({}) {} CampaignInfo::CampaignInfo(const CampaignInfo& info) : campaign_id(info.campaign_id), + priority(info.priority), name(info.name), start_at(info.start_at), end_at(info.end_at), daily_cap(info.daily_cap), - budget(info.budget), advertiser_id(info.advertiser_id), geo_targets(info.geo_targets), creative_sets(info.creative_sets) {} diff --git a/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.h b/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.h index d82b2cfa9028..9277fe3e8dcd 100644 --- a/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.h +++ b/vendor/bat-native-ads/src/bat/ads/internal/campaign_info.h @@ -10,6 +10,7 @@ #include #include "bat/ads/internal/catalog_geo_target_info.h" +#include "bat/ads/internal/catalog_day_part_info.h" #include "bat/ads/internal/catalog_creative_set_info.h" namespace ads { @@ -21,13 +22,14 @@ struct CampaignInfo { ~CampaignInfo(); std::string campaign_id; + unsigned int priority; std::string name; std::string start_at; std::string end_at; unsigned int daily_cap; - unsigned int budget; std::string advertiser_id; std::vector geo_targets; + std::vector day_parts; std::vector creative_sets; }; diff --git a/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.cc b/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.cc index 134082526dca..3d50fc0ea38a 100644 --- a/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.cc +++ b/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.cc @@ -9,26 +9,26 @@ namespace ads { CreativeSetInfo::CreativeSetInfo() : creative_set_id(""), - execution(""), per_day(0), total_max(0), segments({}), + oses({}), creatives({}) {} CreativeSetInfo::CreativeSetInfo(const std::string& creative_set_id) : creative_set_id(creative_set_id), - execution(""), per_day(0), total_max(0), segments({}), + oses({}), creatives({}) {} CreativeSetInfo::CreativeSetInfo(const CreativeSetInfo& info) : creative_set_id(info.creative_set_id), - execution(info.execution), per_day(info.per_day), total_max(info.total_max), segments(info.segments), + oses(info.oses), creatives(info.creatives) {} CreativeSetInfo::~CreativeSetInfo() {} diff --git a/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.h b/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.h index 3f2868490c48..eb8a69f74866 100644 --- a/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.h +++ b/vendor/bat-native-ads/src/bat/ads/internal/catalog_creative_set_info.h @@ -10,6 +10,7 @@ #include #include "bat/ads/internal/catalog_segment_info.h" +#include "bat/ads/internal/catalog_os_info.h" #include "bat/ads/internal/catalog_creative_info.h" namespace ads { @@ -21,10 +22,10 @@ struct CreativeSetInfo { ~CreativeSetInfo(); std::string creative_set_id; - std::string execution; unsigned int per_day; unsigned int total_max; std::vector segments; + std::vector oses; std::vector creatives; }; diff --git a/vendor/bat-native-ads/src/bat/ads/internal/catalog_day_part_info.cc b/vendor/bat-native-ads/src/bat/ads/internal/catalog_day_part_info.cc new file mode 100644 index 000000000000..a91535c79ed8 --- /dev/null +++ b/vendor/bat-native-ads/src/bat/ads/internal/catalog_day_part_info.cc @@ -0,0 +1,22 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "bat/ads/internal/catalog_day_part_info.h" + +namespace ads { + +DayPartInfo::DayPartInfo() : + dow(""), + startMinute(0), + endMinute(0) {} + +DayPartInfo::DayPartInfo(const DayPartInfo& info) : + dow(info.dow), + startMinute(info.startMinute), + endMinute(info.endMinute) {} + +DayPartInfo::~DayPartInfo() {} + +} // namespace ads diff --git a/vendor/bat-native-ads/src/bat/ads/internal/catalog_day_part_info.h b/vendor/bat-native-ads/src/bat/ads/internal/catalog_day_part_info.h new file mode 100644 index 000000000000..174b2e4d90ae --- /dev/null +++ b/vendor/bat-native-ads/src/bat/ads/internal/catalog_day_part_info.h @@ -0,0 +1,25 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BAT_ADS_INTERNAL_CATALOG_DAY_PART_INFO_H_ +#define BAT_ADS_INTERNAL_CATALOG_DAY_PART_INFO_H_ + +#include + +namespace ads { + +struct DayPartInfo { + DayPartInfo(); + DayPartInfo(const DayPartInfo& info); + ~DayPartInfo(); + + std::string dow; + unsigned int startMinute; + unsigned int endMinute; +}; + +} // namespace ads + +#endif // BAT_ADS_INTERNAL_CATALOG_DAY_PART_INFO_H_ diff --git a/vendor/bat-native-ads/src/bat/ads/internal/catalog_os_info.cc b/vendor/bat-native-ads/src/bat/ads/internal/catalog_os_info.cc new file mode 100644 index 000000000000..310b36b3389c --- /dev/null +++ b/vendor/bat-native-ads/src/bat/ads/internal/catalog_os_info.cc @@ -0,0 +1,20 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "bat/ads/internal/catalog_os_info.h" + +namespace ads { + +OsInfo::OsInfo() : + code(""), + name("") {} + +OsInfo::OsInfo(const OsInfo& info) : + code(info.code), + name(info.name) {} + +OsInfo::~OsInfo() {} + +} // namespace ads diff --git a/vendor/bat-native-ads/src/bat/ads/internal/catalog_os_info.h b/vendor/bat-native-ads/src/bat/ads/internal/catalog_os_info.h new file mode 100644 index 000000000000..d38060f38de6 --- /dev/null +++ b/vendor/bat-native-ads/src/bat/ads/internal/catalog_os_info.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2019 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BAT_ADS_INTERNAL_CATALOG_OS_INFO_H_ +#define BAT_ADS_INTERNAL_CATALOG_OS_INFO_H_ + +#include + +namespace ads { + +struct OsInfo { + OsInfo(); + OsInfo(const OsInfo& info); + ~OsInfo(); + + std::string code; + std::string name; +}; + +} // namespace ads + +#endif // BAT_ADS_INTERNAL_CATALOG_OS_INFO_H_ diff --git a/vendor/bat-native-ads/src/bat/ads/internal/catalog_state.cc b/vendor/bat-native-ads/src/bat/ads/internal/catalog_state.cc index d292a5536e41..73084972054a 100644 --- a/vendor/bat-native-ads/src/bat/ads/internal/catalog_state.cc +++ b/vendor/bat-native-ads/src/bat/ads/internal/catalog_state.cc @@ -64,11 +64,10 @@ Result CatalogState::FromJson( campaign_info.campaign_id = campaign["campaignId"].GetString(); campaign_info.advertiser_id = campaign["advertiserId"].GetString(); - campaign_info.name = campaign["name"].GetString(); + campaign_info.priority = campaign["priority"].GetUint(); campaign_info.start_at = campaign["startAt"].GetString(); campaign_info.end_at = campaign["endAt"].GetString(); campaign_info.daily_cap = campaign["dailyCap"].GetUint(); - campaign_info.budget = campaign["budget"].GetUint(); // Geo targets for (const auto& geo_target : campaign["geoTargets"].GetArray()) { @@ -80,6 +79,17 @@ Result CatalogState::FromJson( campaign_info.geo_targets.push_back(geo_target_info); } + // Day parts + for (const auto& day_part : campaign["dayParts"].GetArray()) { + DayPartInfo day_part_info; + + day_part_info.dow = day_part["dow"].GetString(); + day_part_info.startMinute = day_part["startMinute"].GetUint(); + day_part_info.endMinute = day_part["endMinute"].GetUint(); + + campaign_info.day_parts.push_back(day_part_info); + } + // Creative sets for (const auto& creative_set : campaign["creativeSets"].GetArray()) { CreativeSetInfo creative_set_info; @@ -87,17 +97,6 @@ Result CatalogState::FromJson( creative_set_info.creative_set_id = creative_set["creativeSetId"].GetString(); - std::string execution = creative_set["execution"].GetString(); - if (execution != "per_click") { - if (error_description != nullptr) { - *error_description = "Catalog invalid: creativeSet has unknown " - "execution: " + execution; - } - - return FAILED; - } - creative_set_info.execution = execution; - creative_set_info.per_day = creative_set["perDay"].GetUint(); creative_set_info.total_max = creative_set["totalMax"].GetUint(); @@ -122,6 +121,18 @@ Result CatalogState::FromJson( creative_set_info.segments.push_back(segment_info); } + // Oses + auto oses = creative_set["oses"].GetArray(); + + for (const auto& os : oses) { + OsInfo os_info; + + os_info.code = os["code"].GetString(); + os_info.name = os["name"].GetString(); + + creative_set_info.oses.push_back(os_info); + } + // Creatives for (const auto& creative : creative_set["creatives"].GetArray()) { CreativeInfo creative_info; diff --git a/vendor/bat-native-ads/src/bat/ads/internal/static_values.h b/vendor/bat-native-ads/src/bat/ads/internal/static_values.h index 0b84fa8967ca..d6380e9c6e0b 100644 --- a/vendor/bat-native-ads/src/bat/ads/internal/static_values.h +++ b/vendor/bat-native-ads/src/bat/ads/internal/static_values.h @@ -18,7 +18,7 @@ namespace ads { #define STAGING_SERVER "https://ads-serve.bravesoftware.com" #define DEVELOPMENT_SERVER "https://ads-serve.brave.software.com" -#define CATALOG_PATH "/v1/catalog" +#define CATALOG_PATH "/v2/catalog" const int kIdleThresholdInSeconds = 15;