Twitch SDK (Internal)
adsapi.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2017 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
11 #include "twitchsdk/ads/adtypes.h"
12 #include "twitchsdk/core/coreapi.h"
13 #include "twitchsdk/core/module.h"
14 
15 
16 namespace ttv
17 {
18  class TaskRunner;
19 
20  namespace ads
21  {
22  class AdsAPI;
23  }
24 }
25 
26 
38 {
39 public:
40  using FetchAdsCallback = std::function<void(TTV_ErrorCode ec, std::vector<Ad>&& result)>;
41  using ReportAdEventsCallback = std::function<void(TTV_ErrorCode ec)>;
42 
43 public:
44  AdsAPI();
45  virtual ~AdsAPI();
46 
47  // IModule implementation
48  virtual std::string GetModuleName() const override;
49  virtual TTV_ErrorCode Initialize(const InitializeCallback& callback) override;
50  virtual TTV_ErrorCode Shutdown(const ShutdownCallback& callback) override;
51  virtual TTV_ErrorCode Update() override;
52 
53  TTV_ErrorCode SetCoreApi(const std::shared_ptr<CoreAPI>& coreApi);
54 
60  TTV_ErrorCode FetchAds(const AdConfiguration& config, const AdFetchRequestInfo& info, const FetchAdsCallback& callback);
61 
75  TTV_ErrorCode ReportAdEvent(const std::string& url, const std::map<std::string, std::string>& macroSubstitutions, const ReportAdEventsCallback& callback);
76 
81  TTV_ErrorCode ReportAdEvents(const std::vector<std::string>& urls, const std::map<std::string, std::string>& macroSubstitutions);
82 
83 protected:
84  // ModuleBase overrides
85  virtual bool CheckShutdown() override;
86  virtual void CompleteShutdown() override;
87 
88 private:
90  {
91  public:
92  // ICoreApiClient implementation
93  virtual std::string GetClientName();
94  };
95 
96  std::shared_ptr<CoreAPI> mCoreApi;
97  std::shared_ptr<TaskRunner> mTaskRunner;
98  std::shared_ptr<CoreApiClient> mCoreApiClient;
99 };
std::shared_ptr< CoreApiClient > mCoreApiClient
Definition: adsapi.h:98
Definition: coreapi.h:51
Definition: adtypes.h:165
Definition: adtypes.h:120
virtual TTV_ErrorCode Initialize(const InitializeCallback &callback) override
Definition: adsapi.h:37
virtual TTV_ErrorCode Update() override
std::function< void(TTV_ErrorCode ec, std::vector< Ad > &&result)> FetchAdsCallback
Definition: adsapi.h:40
TTV_ErrorCode ReportAdEvent(const std::string &url, const std::map< std::string, std::string > &macroSubstitutions, const ReportAdEventsCallback &callback)
virtual bool CheckShutdown() override
TTV_ErrorCode ReportAdEvents(const std::vector< std::string > &urls, const std::map< std::string, std::string > &macroSubstitutions)
TTV_ErrorCode FetchAds(const AdConfiguration &config, const AdFetchRequestInfo &info, const FetchAdsCallback &callback)
std::function< void(TTV_ErrorCode ec)> InitializeCallback
Definition: module.h:48
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
virtual std::string GetModuleName() const override
virtual std::string GetClientName()
TTV_ErrorCode SetCoreApi(const std::shared_ptr< CoreAPI > &coreApi)
virtual void CompleteShutdown() override
std::shared_ptr< CoreAPI > mCoreApi
Definition: adsapi.h:96
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
std::function< void(TTV_ErrorCode ec)> ShutdownCallback
Definition: module.h:49
virtual ~AdsAPI()
std::shared_ptr< TaskRunner > mTaskRunner
Definition: adsapi.h:97
std::function< void(TTV_ErrorCode ec)> ReportAdEventsCallback
Definition: adsapi.h:41
Definition: module.h:85
Definition: taskrunner.h:21
Definition: adsapi.h:89
virtual TTV_ErrorCode Shutdown(const ShutdownCallback &callback) override