Twitch SDK (Internal)
jsonobjectdescriptions.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-2016 Twitch Interactive, Inc.
7  *********************************************************************************************/
8 
9 #pragma once
10 
12 
13 namespace ttv
14 {
15  namespace json
16  {
17  namespace description
18  {
19  struct UserInfo;
20  struct ChannelInfo;
21  struct StreamInfo;
22  struct BroadcasterType;
23  struct PreviewImages;
24  struct BroadcastPlatform;
25  struct StreamType;
26  }
27  }
28 }
29 
30 
32 {
33  template <typename UserInfoType>
34  static auto BindFields(UserInfoType& info)
35  {
36  return std::make_tuple
37  (
38  make_field<RequiredField>("_id", info.userId),
39  make_field<RequiredField>("name", info.userName),
40  make_field("display_name", info.displayName),
41  make_field("bio", info.bio),
42  make_field("logo", info.logoImageUrl),
43  make_field<DateSchema, OptionalField>("created_at", info.createdTimestamp)
44  );
45  }
46 };
47 
48 
50 {
51  template <typename ChannelInfoType>
52  static auto BindFields(ChannelInfoType& channelInfo)
53  {
54  using namespace ttv::json;
55 
56  return std::make_tuple
57  (
58  make_field<RequiredField>("_id", channelInfo.channelId),
59  make_field<OptionalField>("broadcaster_language", channelInfo.broadcasterLanguage),
60  make_field<OptionalField>("broadcaster_type", channelInfo.broadcasterType),
61  make_field<DateSchema, OptionalField>("created_at", channelInfo.createdAtTimestamp),
62  make_field<OptionalField>("description", channelInfo.description),
63  make_field<OptionalField>("display_name", channelInfo.displayName),
64  make_field<OptionalField>("followers", channelInfo.numFollowers),
65  make_field<OptionalField>("game", channelInfo.game),
66  make_field<OptionalField>("language", channelInfo.language),
67  make_field<OptionalField>("logo", channelInfo.logoImageUrl),
68  make_field<OptionalField>("mature", channelInfo.mature),
69  make_field<OptionalField>("name", channelInfo.name),
70  make_field<OptionalField>("partner", channelInfo.partner),
71  make_field<OptionalField>("profile_banner", channelInfo.profileBannerImageUrl),
72  make_field<ColorSchema, OptionalField>("profile_banner_background_color", channelInfo.profileBannerBackgroundColor),
73  make_field<OptionalField>("status", channelInfo.status),
74  make_field<DateSchema, OptionalField>("updated_at", channelInfo.updatedAtTimestamp),
75  make_field<OptionalField>("url", channelInfo.channelUrl),
76  make_field<OptionalField>("video_banner", channelInfo.videoBannerImageUrl),
77  make_field<OptionalField>("views", channelInfo.numViews)
78  );
79  }
80 };
81 
82 
84 {
85  static auto EnumMap()
86  {
87  using namespace ttv::json;
88 
89  return std::make_tuple
90  (
94  );
95  }
96 
97  static auto GetFallbackValue()
98  {
100  }
101 };
102 
103 
105 {
106  template <typename StreamInfoType>
107  static auto BindFields(StreamInfoType& streamInfo)
108  {
109  using namespace ttv::json;
110 
111  return std::make_tuple
112  (
113  make_field<RequiredField>("_id", streamInfo.streamId),
114  make_field<OptionalField>("average_fps", streamInfo.averageFPS),
115  make_field<OptionalField>("broadcast_platform", streamInfo.broadcastPlatform),
116  make_field<OptionalField>("channel", streamInfo.channelInfo),
117  make_field<OptionalField>("community_ids", streamInfo.communityIds),
118  make_field<DateSchema, OptionalField>("created_at", streamInfo.createdAtTimestamp),
119  make_field<OptionalField>("delay", streamInfo.delay),
120  make_field<OptionalField>("game", streamInfo.game),
121  make_field<OptionalField>("is_playlist", streamInfo.isPlaylist),
122  make_field<OptionalField>("delay", streamInfo.delay),
123  make_field<OptionalField>("preview", streamInfo.previewImages),
124  make_field<OptionalField>("stream_type", streamInfo.streamType),
125  make_field<OptionalField>("video_height", streamInfo.videoHeight),
126  make_field<OptionalField>("viewers", streamInfo.viewerCount)
127  );
128  }
129 };
130 
131 
133 {
134  template <typename PreviewImagesType>
135  static auto BindFields(PreviewImagesType& images)
136  {
137  using namespace ttv::json;
138 
139  return std::make_tuple
140  (
141  make_field<RequiredField>("large", images.largeUrl),
142  make_field<OptionalField>("medium", images.mediumUrl),
143  make_field<OptionalField>("small", images.smallUrl),
144  make_field<OptionalField>("template", images.templateUrl)
145  );
146  }
147 };
148 
149 
151 {
152  static auto EnumMap()
153  {
154  using namespace ttv::json;
155 
156  return std::make_tuple
157  (
166  );
167  }
168 
169  static auto GetFallbackValue()
170  {
172  }
173 };
174 
175 
177 {
178  static auto EnumMap()
179  {
180  using namespace ttv::json;
181 
182  return std::make_tuple
183  (
189  );
190  }
191 
192  static auto GetFallbackValue()
193  {
195  }
196 };
197 
198 
199 template <>
201 {
203 };
204 
205 
206 template <>
208 {
210 };
211 
212 
213 template<>
215 {
217 };
218 
219 
220 template <>
222 {
224 };
225 
226 
227 template <>
229 {
231 };
232 
233 
234 template<>
236 {
238 };
239 
240 
241 template<>
243 {
245 };
Definition: jsonobjectdescriptions.h:83
BroadcasterType
Definition: coretypes.h:47
Definition: jsonobjectdescriptions.h:176
Definition: jsonserialization.h:127
auto make_enum_mapping(const char *string, EnumType value)
Definition: jsonserialization.h:657
StreamType
Definition: coretypes.h:117
Definition: coretypes.h:32
auto make_field(const char *key, ObjectType &field)
Definition: jsonserialization.h:874
static auto EnumMap()
Definition: jsonobjectdescriptions.h:152
Definition: coretypes.h:130
static auto BindFields(StreamInfoType &streamInfo)
Definition: jsonobjectdescriptions.h:107
static auto GetFallbackValue()
Definition: jsonobjectdescriptions.h:97
Definition: jsonserialization.h:235
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
If neither Partner nor Affiliate.
static auto GetFallbackValue()
Definition: jsonobjectdescriptions.h:169
Definition: jsonserialization.h:165
Definition: jsonobjectdescriptions.h:150
Definition: coretypes.h:89
static auto EnumMap()
Definition: jsonobjectdescriptions.h:85
Definition: features.h:8
Definition: jsonobjectdescriptions.h:132
static auto BindFields(UserInfoType &info)
Definition: jsonobjectdescriptions.h:34
static auto BindFields(ChannelInfoType &channelInfo)
Definition: jsonobjectdescriptions.h:52
Definition: jsonobjectdescriptions.h:104
static auto EnumMap()
Definition: jsonobjectdescriptions.h:178
Definition: coretypes.h:58
static auto GetFallbackValue()
Definition: jsonobjectdescriptions.h:192
BroadcastPlatform
Definition: coretypes.h:100
Definition: jsonobjectdescriptions.h:49
Definition: jsonobjectdescriptions.h:31
static auto BindFields(PreviewImagesType &images)
Definition: jsonobjectdescriptions.h:135