Skip to content

Commit

Permalink
Merge pull request #75 from brave-intl/media-refactor
Browse files Browse the repository at this point in the history
Media refactor
  • Loading branch information
NejcZdovc authored Sep 5, 2018
2 parents 6da42fa + ea40b6d commit 97f1e58
Show file tree
Hide file tree
Showing 13 changed files with 245 additions and 313 deletions.
22 changes: 14 additions & 8 deletions include/bat/ledger/ledger.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ LEDGER_EXPORT struct VisitData {
const std::string& _path,
uint32_t _tab_id,
PUBLISHER_MONTH _local_month,
int _local_year);
int _local_year,
const std::string& name,
const std::string& url,
const std::string& provider,
const std::string& favicon_url);
VisitData(const VisitData& data);
~VisitData();

Expand All @@ -36,7 +40,10 @@ LEDGER_EXPORT struct VisitData {
uint32_t tab_id;
PUBLISHER_MONTH local_month;
int local_year;
std::string favIconURL;
std::string name;
std::string url;
std::string provider;
std::string favicon_url;
};

LEDGER_EXPORT struct PaymentData {
Expand Down Expand Up @@ -110,11 +117,10 @@ class LEDGER_EXPORT Ledger {
PublisherInfoCallback callback) = 0;
virtual void GetPublisherInfo(const ledger::PublisherInfoFilter& filter,
PublisherInfoCallback callback) = 0;
virtual void SetMediaPublisherInfo(const uint64_t& duration, std::unique_ptr<MediaPublisherInfo> media_publisher_info,
const ledger::VisitData& visit_data,
MediaPublisherInfoCallback callback) = 0;
virtual void GetMediaPublisherInfo(const std::string& publisher_key,
MediaPublisherInfoCallback callback) = 0;
virtual void SetMediaPublisherInfo(const std::string& media_key,
const std::string& publisher_id) = 0;
virtual void GetMediaPublisherInfo(const std::string& media_key,
PublisherInfoCallback callback) = 0;
virtual std::vector<ContributionInfo> GetRecurringDonationPublisherInfo() = 0;
virtual void GetPublisherInfoList(uint32_t start, uint32_t limit,
const ledger::PublisherInfoFilter& filter,
Expand Down Expand Up @@ -152,7 +158,7 @@ class LEDGER_EXPORT Ledger {
virtual std::map<std::string, ledger::BalanceReportInfo> GetAllBalanceReports() const = 0;

virtual void RecoverWallet(const std::string& passPhrase) const = 0;
virtual void SaveMediaVisit(const ledger::VisitData& visit_data, const uint64_t& duration) = 0;
virtual void SaveMediaVisit(const std::string& publisher_id, const ledger::VisitData& visit_data, const uint64_t& duration) = 0;
};

} // namespace ledger
Expand Down
10 changes: 4 additions & 6 deletions include/bat/ledger/ledger_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ LEDGER_EXPORT enum URL_METHOD {

using PublisherInfoCallback = std::function<void(Result,
std::unique_ptr<PublisherInfo>)>;
using MediaPublisherInfoCallback = std::function<void(Result,
std::unique_ptr<MediaPublisherInfo>)>;
using GetPublisherInfoListCallback =
std::function<void(const PublisherInfoList&, uint32_t /* next_record */)>;

Expand Down Expand Up @@ -65,10 +63,10 @@ class LEDGER_EXPORT LedgerClient {
PublisherInfoCallback callback) = 0;
virtual void LoadPublisherInfo(PublisherInfoFilter filter,
PublisherInfoCallback callback) = 0;
virtual void LoadMediaPublisherInfo(const std::string& publisher_id,
MediaPublisherInfoCallback callback) = 0;
virtual void SaveMediaPublisherInfo(std::unique_ptr<MediaPublisherInfo> media_publisher_info,
MediaPublisherInfoCallback callback) = 0;
virtual void LoadMediaPublisherInfo(const std::string& media_key,
PublisherInfoCallback callback) = 0;
virtual void SaveMediaPublisherInfo(const std::string& media_key,
const std::string& publisher_id) = 0;
virtual void LoadPublisherInfoList(uint32_t start, uint32_t limit,
PublisherInfoFilter filter,
GetPublisherInfoListCallback callback) = 0;
Expand Down
18 changes: 1 addition & 17 deletions include/bat/ledger/media_publisher_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#define BAT_LEDGER_MEDIA_PUBLISHER_INFO_HANDLER_

#include "bat/ledger/export.h"
#include "bat/ledger/publisher_info.h"

namespace ledger {

Expand All @@ -19,23 +20,6 @@ LEDGER_EXPORT struct TwitchEventInfo {
std::string status_;
};

LEDGER_EXPORT struct MediaPublisherInfo {
MediaPublisherInfo(const std::string& publisher_id);
MediaPublisherInfo(const MediaPublisherInfo& info);
~MediaPublisherInfo();

static std::unique_ptr<MediaPublisherInfo> FromJSON(const std::string& json);
const std::string ToJSON() const;

std::string publisher_id_;
std::string publisherName_;
std::string publisherURL_;
std::string favIconURL_;
std::string channelName_;
std::string publisher_;
TwitchEventInfo twitchEventInfo_;
};

} // namespace ledger

#endif // BAT_LEDGER_MEDIA_PUBLISHER_INFO_HANDLER_
11 changes: 7 additions & 4 deletions include/bat/ledger/publisher_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,14 @@ LEDGER_EXPORT struct ContributionInfo {
};

LEDGER_EXPORT struct PublisherInfo {
typedef std::string id_type;
PublisherInfo(const id_type& publisher_id, PUBLISHER_MONTH month, int year);
PublisherInfo();
PublisherInfo(const std::string& publisher_id, PUBLISHER_MONTH month, int year);
PublisherInfo(const PublisherInfo& info);
~PublisherInfo();

bool is_valid() const;

const id_type id;
std::string id;
uint64_t duration;
double score;
uint32_t visits;
Expand All @@ -84,8 +84,11 @@ LEDGER_EXPORT struct PublisherInfo {
PUBLISHER_CATEGORY category;
PUBLISHER_MONTH month;
int year;
std::string favIconURL;
bool verified;
std::string name;
std::string url;
std::string provider;
std::string favicon_url;

std::vector<ContributionInfo> contributions;
};
Expand Down
131 changes: 38 additions & 93 deletions src/bat/ledger/ledger.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,21 @@ VisitData::VisitData(const std::string& _tld,
const std::string& _path,
uint32_t _tab_id,
PUBLISHER_MONTH _local_month,
int _local_year) :
int _local_year,
const std::string& _name,
const std::string& _url,
const std::string& _provider,
const std::string& _favicon_url) :
tld(_tld),
domain(_domain),
path(_path),
tab_id(_tab_id),
local_month(_local_month),
local_year(_local_year) {}
local_year(_local_year),
name(_name),
url(_url),
provider(_provider),
favicon_url(_favicon_url) {}

VisitData::VisitData(const VisitData& data) :
tld(data.tld),
Expand All @@ -38,7 +46,10 @@ VisitData::VisitData(const VisitData& data) :
tab_id(data.tab_id),
local_month(data.local_month),
local_year(data.local_year),
favIconURL(data.favIconURL) {}
name(data.name),
url(data.url),
provider(data.provider),
favicon_url(data.favicon_url) {}

VisitData::~VisitData() {}

Expand Down Expand Up @@ -82,7 +93,21 @@ PublisherInfoFilter::PublisherInfoFilter(const PublisherInfoFilter& filter) :
year(filter.year) {}
PublisherInfoFilter::~PublisherInfoFilter() {}

PublisherInfo::PublisherInfo(const id_type& publisher_id,
PublisherInfo::PublisherInfo() :
duration(0u),
score(.0),
visits(0u),
percent(0u),
weight(.0),
excluded(PUBLISHER_EXCLUDE::DEFAULT),
category(PUBLISHER_CATEGORY::AUTO_CONTRIBUTE),
verified(false),
name(""),
url(""),
provider(""),
favicon_url("") {}

PublisherInfo::PublisherInfo(const std::string& publisher_id,
PUBLISHER_MONTH _month,
int _year) :
id(publisher_id),
Expand All @@ -95,7 +120,11 @@ PublisherInfo::PublisherInfo(const id_type& publisher_id,
category(PUBLISHER_CATEGORY::AUTO_CONTRIBUTE),
month(_month),
year(_year),
verified(false) {}
verified(false),
name(""),
url(""),
provider(""),
favicon_url("") {}

PublisherInfo::PublisherInfo(const PublisherInfo& info) :
id(info.id),
Expand All @@ -108,8 +137,11 @@ PublisherInfo::PublisherInfo(const PublisherInfo& info) :
category(info.category),
month(info.month),
year(info.year),
favIconURL(info.favIconURL),
verified(info.verified),
name(info.name),
url(info.url),
provider(info.provider),
favicon_url(info.favicon_url),
contributions(info.contributions) {}

PublisherInfo::~PublisherInfo() {}
Expand All @@ -131,93 +163,6 @@ TwitchEventInfo::TwitchEventInfo(const TwitchEventInfo& info):
TwitchEventInfo::~TwitchEventInfo() {}


MediaPublisherInfo::MediaPublisherInfo(const std::string& publisher_id):
publisher_id_(publisher_id) {}

MediaPublisherInfo::MediaPublisherInfo(const MediaPublisherInfo& info):
publisher_id_(info.publisher_id_),
publisherName_(info.publisherName_),
publisherURL_(info.publisherURL_),
favIconURL_(info.favIconURL_),
channelName_(info.channelName_),
publisher_(info.publisher_),
twitchEventInfo_(info.twitchEventInfo_) {}

MediaPublisherInfo::~MediaPublisherInfo() {}

// static
std::unique_ptr<MediaPublisherInfo> MediaPublisherInfo::FromJSON(
const std::string& json) {
std::unique_ptr<MediaPublisherInfo> info;

rapidjson::Document d;
d.Parse(json.c_str());

if (d.HasParseError() ||
!d["id"].IsString() ||
!d["publisherName"].IsString() ||
!d["publisherURL"].IsString() ||
!d["favIconURL"].IsString() ||
!d["channelName"].IsString() ||
!d["publisher"].IsString() ||
!d["twitch_event"].IsString() ||
!d["twitch_time"].IsString() ||
!d["twitch_status"].IsString()) {
return info;
}

info = std::make_unique<MediaPublisherInfo>(d["id"].GetString());
info->publisherName_ = d["publisherName"].GetString();
info->publisherURL_ = d["publisherURL"].GetString();
info->favIconURL_ = d["favIconURL"].GetString();
info->channelName_ = d["channelName"].GetString();
info->publisher_ = d["publisher"].GetString();
info->twitchEventInfo_.event_ = d["twitch_event"].GetString();
info->twitchEventInfo_.time_ = d["twitch_time"].GetString();
info->twitchEventInfo_.status_ = d["twitch_status"].GetString();

return info;
}

const std::string MediaPublisherInfo::ToJSON() const {
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);

writer.StartObject();

writer.String("id");
writer.String(publisher_id_.c_str());

writer.String("publisherName");
writer.String(publisherName_.c_str());

writer.String("publisherURL");
writer.String(publisherURL_.c_str());

writer.String("favIconURL");
writer.String(favIconURL_.c_str());

writer.String("channelName");
writer.String(channelName_.c_str());

writer.String("publisher");
writer.String(publisher_.c_str());

writer.String("twitch_event");
writer.String(twitchEventInfo_.event_.c_str());

writer.String("twitch_time");
writer.String(twitchEventInfo_.time_.c_str());

writer.String("twitch_status");
writer.String(twitchEventInfo_.status_.c_str());

writer.EndObject();

return buffer.GetString();
}


// static
ledger::Ledger* Ledger::CreateInstance(LedgerClient* client) {
return new bat_ledger::LedgerImpl(client);
Expand Down
Loading

0 comments on commit 97f1e58

Please sign in to comment.