Twitch SDK (Internal)
fetchadstask.h
Go to the documentation of this file.
1 #pragma once
2 
5 
9 
10 #include <map>
11 
12 namespace ttv
13 {
14  namespace ads
15  {
16  class FetchAdsTask;
17  }
18 }
19 
21 {
22 public:
23  struct Context
24  {
26  : initialRequest(true)
27  {
28  }
29 
30  bool RequiresIteration() const
31  {
32  return initialRequest ||
33  !adWrappers.empty() ||
34  !errorUrls.empty() ||
35  !playlistUrls.empty();
36  }
37 
40  std::vector<Ad> ads;
41  std::vector<AdWrapper> adWrappers;
42  std::vector<std::string> errorUrls;
43  std::vector<std::string> playlistUrls;
45  };
46 
47  using Callback = std::function<void(FetchAdsTask* source, TTV_ErrorCode ec)>;
48 
49 public:
50  FetchAdsTask(const std::shared_ptr<Context>& context, const Callback& callback);
51 
52  void ProcessResponse(uint statusCode, const std::vector<char>& response) override;
53  void OnComplete() override;
54 
55 protected:
56  virtual const char* GetTaskName() const override { return "FetchAdsTask"; }
57  virtual void FillHttpRequestInfo(HttpRequestInfo & requestInfo) override;
58  virtual void ResponseCallback(uint statusCode, const std::vector<char>& response) override;
59 
60 private:
61  enum class RequestType
62  {
63  Initial,
64  Error,
65  Playlist,
66  Wrapper
67  };
68 
69  std::string GenerateUrl();
70 
72  std::shared_ptr<Context> mContext;
73  AdWrapper mActiveWrapper; // Valid when mRequestType == Wrapper
75 };
RequestType mRequestType
Definition: fetchadstask.h:74
virtual const char * GetTaskName() const override
Definition: fetchadstask.h:56
std::vector< std::string > playlistUrls
Definition: fetchadstask.h:43
void OnComplete() override
std::function< void(FetchAdsTask *source, TTV_ErrorCode ec)> Callback
Definition: fetchadstask.h:47
Definition: adtypes.h:165
Context()
Definition: fetchadstask.h:25
Definition: adtypes.h:120
AdConfiguration config
Definition: fetchadstask.h:38
void ProcessResponse(uint statusCode, const std::vector< char > &response) override
AdWrapper mActiveWrapper
Definition: fetchadstask.h:73
Definition: vastparser.h:20
bool RequiresIteration() const
Definition: fetchadstask.h:30
Definition: httptask.h:19
Definition: fetchadstask.h:23
std::string GenerateUrl()
std::vector< std::string > errorUrls
Definition: fetchadstask.h:42
std::vector< AdWrapper > adWrappers
Definition: fetchadstask.h:41
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
RequestType
Definition: fetchadstask.h:61
FetchAdsTask(const std::shared_ptr< Context > &context, const Callback &callback)
Callback mCallback
Definition: fetchadstask.h:71
unsigned int uint
Definition: coretypes.h:18
virtual void FillHttpRequestInfo(HttpRequestInfo &requestInfo) override
Definition: fetchadstask.h:20
bool initialRequest
Definition: fetchadstask.h:44
std::vector< Ad > ads
Definition: fetchadstask.h:40
std::shared_ptr< Context > mContext
Definition: fetchadstask.h:72
Definition: httptask.h:22
AdFetchRequestInfo info
Definition: fetchadstask.h:39
virtual void ResponseCallback(uint statusCode, const std::vector< char > &response) override