Gems/Twitch/Code/Source/TwitchReflection.cpp (1,023 lines of code) (raw):

/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include <AzCore/Script/ScriptContext.h> #include <AzCore/RTTI/BehaviorContext.h> #include <Twitch/TwitchBus.h> #include "TwitchReflection.h" namespace AZ { /* ** Helper macros to reflect the Twitch enums */ AZ_TYPE_INFO_SPECIALIZE(Twitch::ResultCode, "{DA72B2F5-2983-4E30-B64C-BDF417FA73A6}"); AZ_TYPE_INFO_SPECIALIZE(Twitch::PresenceAvailability, "{090CF417-870C-4E27-B9FC-6FE96787DE18}"); AZ_TYPE_INFO_SPECIALIZE(Twitch::PresenceActivityType, "{B8D3EFFC-D71E-4441-9D09-BFD585A4B1B8}"); AZ_TYPE_INFO_SPECIALIZE(Twitch::BroadCastType, "{751DA7A4-A080-4DE4-A15F-F63B2B066AA6}"); AZ_TYPE_INFO_SPECIALIZE(Twitch::CommercialLength, "{76255136-2B04-4EE2-A499-BBB141A28716}"); } namespace Twitch { #define ENUMCASE(code) case code: txtCode=AZStd::string::format(#code"(%llu)",static_cast<AZ::u64>(code)); break; AZStd::string ResultCodeToString(ResultCode code) { AZStd::string txtCode; switch(code) { ENUMCASE(ResultCode::Success) ENUMCASE(ResultCode::InvalidParam) ENUMCASE(ResultCode::TwitchRESTError) ENUMCASE(ResultCode::TwitchChannelNoUpdatesToMake) ENUMCASE(ResultCode::Unknown) default: txtCode = AZStd::string::format("Undefined ResultCode (%llu)", static_cast<AZ::u64>(code)); } return txtCode; } AZStd::string PresenceAvailabilityToString(PresenceAvailability availability) { AZStd::string txtCode; switch (availability) { ENUMCASE(PresenceAvailability::Unknown) ENUMCASE(PresenceAvailability::Online) ENUMCASE(PresenceAvailability::Idle) default: txtCode = AZStd::string::format("Undefined PresenceAvailability (%llu)", static_cast<AZ::u64>(availability)); } return txtCode; } AZStd::string PresenceActivityTypeToString(PresenceActivityType activity) { AZStd::string txtCode; switch (activity) { ENUMCASE(PresenceActivityType::Unknown) ENUMCASE(PresenceActivityType::Watching) ENUMCASE(PresenceActivityType::Playing) ENUMCASE(PresenceActivityType::Broadcasting) default: txtCode = AZStd::string::format("Undefined PresenceActivityType (%llu)", static_cast<AZ::u64>(activity)); } return txtCode; } AZStd::string BoolName(bool value, const AZStd::string & trueText, const AZStd::string & falseText) { return value ? trueText : falseText; } AZStd::string UserNotificationsToString(const UserNotifications & info) { return "Email: " + BoolName(info.EMail, "On", "Off") + "Push: " + BoolName(info.EMail, "On", "Off"); } AZStd::string UserInfoIDToString(const UserInfo & info) { return "UserID:" + info.ID; } AZStd::string UserInfoMiniString(const UserInfo & info) { return UserInfoIDToString(info) + " DisplayName:" + info.DisplayName + " Name:" + info.Name + " Type:" + info.Type; } AZStd::string UserInfoToString(const UserInfo & info) { return UserInfoMiniString(info) + " Bio:" + info.Bio + " EMail:" + info.EMail + " Logo:" + info.Logo + " Notifications:" + UserNotificationsToString(info.Notifications) + " CreatedDate:" + info.CreatedDate + " UpdatedDate:" + info.UpdatedDate + " EMailVerified:" + BoolName(info.EMailVerified, "Yes", "No") + " Partnered:" + BoolName(info.Partnered, "Yes", "No") + " TwitterConnected:" + BoolName(info.TwitterConnected, "Yes", "No"); } AZStd::string UserInfoListToString(const UserInfoList & info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += UserInfoMiniString(i); strList += "}"; } return strList; } AZStd::string FriendRecommendationToString(const FriendRecommendation & info) { return UserInfoIDToString(info.User) + " Reason:" + info.Reason; } AZStd::string FriendRecommendationsToString(const FriendRecommendationList & info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += FriendRecommendationToString(i); strList += "}"; } return strList; } AZStd::string FriendInfoToString(const FriendInfo & info) { return UserInfoIDToString(info.User) + " CreatedDate:" + info.CreatedDate; } AZStd::string FriendListToString(const FriendList & info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += FriendInfoToString(i); strList += "}"; } return strList; } AZStd::string FriendRequestToString(const FriendRequest & info) { return UserInfoIDToString(info.User) + " IsRecommended:" + BoolName(info.IsRecommended, "Yes", "No") + " IsStranger:" + BoolName(info.IsStranger, "Yes", "No") + " NonStrangerReason:" + info.NonStrangerReason + " RequestedDate:" + info.RequestedDate; } AZStd::string FriendRequestListToString(const FriendRequestList & info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += FriendRequestToString(i); strList += "}"; } return strList; } AZStd::string PresenceStatusToString(const PresenceStatus & info) { return "UserID:" + info.UserID + " Index:" + AZStd::string::format("%lld", info.Index) + " UpdatedDate:" + AZStd::string::format("%lld", info.UpdatedDate) + " ActivityType:" + PresenceActivityTypeToString(info.ActivityType) + " Availability:" + PresenceAvailabilityToString(info.Availability); } AZStd::string PresenceStatusListToString(const PresenceStatusList & info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += PresenceStatusToString(i); strList += "}"; } return strList; } AZStd::string PresenceSettingsToString(const PresenceSettings & info) { return "IsInvisible:" + BoolName(info.IsInvisible, "Yes", "No") + " ShareActivity:" + BoolName(info.ShareActivity, "Shared", "None"); } AZStd::string ChannelInfoToString(const ChannelInfo & info) { return "Followers:" + AZStd::string::format("%llu", info.NumFollowers) + "Views:" + AZStd::string::format("%llu", info.NumViews) + "ItemsRecieved:" + AZStd::string::format("%llu", info.NumItemsRecieved) + "Partner:" + BoolName(info.Partner, "Yes", "No") + "Mature:" + BoolName(info.Mature, "Yes", "No") + "Id:" + info.Id + "BroadcasterLanguage:" + info.BroadcasterLanguage + "DisplayName:" + info.DisplayName + "eMail:" + info.eMail + "GameName:" + info.GameName + "Language:" + info.Lanugage + "Logo:" + info.Logo + "Name:" + info.Name + "ProfileBanner:" + info.ProfileBanner + "ProfileBannerBackgroundColor:" + info.ProfileBannerBackgroundColor + "Status:" + info.Status + "StreamKey:" + info.StreamKey + "UpdatedDate:" + info.UpdatedDate + "CreatedDate:" + info.CreatedDate + "URL:" + info.URL + "VideoBanner:" + info.VideoBanner; } AZStd::string FollowerToString(const Follower& info) { return UserInfoIDToString(info.User) + " CreatedDate:" + info.CreatedDate + " Notifications:" + BoolName(info.Notifications, "On", "Off"); } AZStd::string FollowerListToString(const FollowerList & info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += FollowerToString(i); strList += "}"; } return strList; } AZStd::string TeamInfoToString(const TeamInfo& info) { return "ID:" + info.ID + " Background:" + info.Background + " Banner:" + info.Banner + " CreatedDate:" + info.CreatedDate + " DisplayName:" + info.DisplayName + " Info:" + info.Info + " Logo:" + info.Logo + " Name:" + info.Name + " UpdatedDate:" + info.UpdatedDate; } AZStd::string TeamInfoListToString(const TeamInfoList& info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += TeamInfoToString(i); strList += "}"; } return strList; } AZStd::string SubscriberInfoToString(const SubscriberInfo& info) { return "ID:" + info.ID + " CreatedDate:" + info.CreatedDate + UserInfoIDToString(info.User); } AZStd::string SubscriberInfoListToString(const SubscriberInfoList& info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += SubscriberInfoToString(i); strList += "}"; } return strList; } AZStd::string VideoInfoShortToString(const VideoInfo& info) { return "ID:" + info.ID; } AZStd::string VideoInfoListToString(const VideoInfoList& info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += VideoInfoShortToString(i); strList += "}"; } return strList; } AZStd::string StartChannelCommercialResultToString(const StartChannelCommercialResult& info) { return "Duration:" + AZStd::string::format("%llu", info.Duration) + " RetryAfter:" + AZStd::string::format("%llu", info.RetryAfter) + " Message:" + info.Message; } AZStd::string CommunityInfoToString(const CommunityInfo& info) { return "ID:" + info.ID + " AvatarImageURL:" + info.AvatarImageURL + " CoverImageURL:" + info.CoverImageURL + " Description:" + info.Description + " DescriptionHTML:" + info.DescriptionHTML + " Language:" + info.Language + " Name:" + info.Name + " OwnerID:" + info.OwnerID + " Rules:" + info.Rules + " RulesHTML:" + info.RulesHTML + " Summary:" + info.Summary; } AZStd::string CommunityInfoListToString(const CommunityInfoList& info) { AZStd::string strList; for (const auto & i : info) { if (!strList.empty()) { strList += ","; } strList += "{"; strList += CommunityInfoToString(i); strList += "}"; } return strList; } AZStd::string ReturnValueToString(const ReturnValue& info) { return "ReceiptID:" + AZStd::string::format("%llu", info.GetID()) + " Result: " + ResultCodeToString(info.Result); } AZStd::string Int64Value::ToString() const { return ReturnValueToString(*this) + AZStd::string::format(" Int64:%lld", Value); } AZStd::string Uint64Value::ToString() const { return ReturnValueToString(*this) + AZStd::string::format(" Uint64:%llu", Value); } AZStd::string StringValue::ToString() const { return ReturnValueToString(*this) + " String:" + "\"" + Value + "\""; } AZStd::string UserInfoValue::ToString() const { return ReturnValueToString(*this) + UserInfoToString(Value); } AZStd::string FriendRecommendationValue::ToString() const { return ReturnValueToString(*this) + " ListSize:" + AZStd::string::format("%llu-", static_cast<AZ::u64>(Value.size())) + " Recommendations:" + FriendRecommendationsToString(Value); } AZStd::string GetFriendValue::ToString() const { return ReturnValueToString(*this) + " ListSize:" + AZStd::string::format("%llu-", static_cast<AZ::u64>(Value.Friends.size())) + " Cursor:" + Value.Cursor + " Friends:" + FriendListToString(Value.Friends); } AZStd::string FriendStatusValue::ToString() const { return ReturnValueToString(*this) + " Status:" + Value.Status + UserInfoToString(Value.User); } AZStd::string FriendRequestValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", Value.Total) + " Cursor:" + Value.Cursor + " Requests:" + FriendRequestListToString(Value.Requests); } AZStd::string PresenceStatusValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", static_cast<AZ::u64>(Value.size())) + " StatusList:" + PresenceStatusListToString(Value); } AZStd::string PresenceSettingsValue::ToString() const { return ReturnValueToString(*this) + " " + PresenceSettingsToString(Value); } AZStd::string ChannelInfoValue::ToString() const { return ReturnValueToString(*this) + " " + ChannelInfoToString(Value); } AZStd::string UserInfoListValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", static_cast<AZ::u64>(Value.size())) + " Users:" + UserInfoListToString(Value); } AZStd::string FollowerResultValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", Value.Total) + " Cursor:" + Value.Cursor + " Followers:" + FollowerListToString(Value.Followers); } AZStd::string ChannelTeamValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", static_cast<AZ::u64>(Value.size())) + " Teams:" + TeamInfoListToString(Value); } AZStd::string SubscriberValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", Value.Total) + " Subscribers:" + SubscriberInfoListToString(Value.Subscribers); } AZStd::string SubscriberbyUserValue::ToString() const { return ReturnValueToString(*this) + " SubscriberInfo:" + SubscriberInfoToString(Value); } AZStd::string VideoReturnValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", Value.Total) + " Videos:" + VideoInfoListToString(Value.Videos); } AZStd::string StartChannelCommercialValue::ToString() const { return ReturnValueToString(*this) + " " + StartChannelCommercialResultToString(Value); } AZStd::string CommunityInfoValue::ToString() const { return ReturnValueToString(*this) + " " + CommunityInfoToString(Value); } AZStd::string CommunityInfoReturnValue::ToString() const { return ReturnValueToString(*this) + " Total:" + AZStd::string::format("%llu", Value.Total) + " Communities:" + CommunityInfoListToString(Value.Communities); } namespace Internal { class BehaviorTwitchNotifyBus : public TwitchNotifyBus::Handler , public AZ::BehaviorEBusHandler { public: AZ_EBUS_BEHAVIOR_BINDER(BehaviorTwitchNotifyBus, "{63EEA49D-1205-4E43-9451-26ACF5771901}", AZ::SystemAllocator, UserIDNotify, OAuthTokenNotify, GetUser, ResetFriendsNotificationCountNotify, GetFriendNotificationCount, GetFriendRecommendations, GetFriends, GetFriendStatus, AcceptFriendRequest, GetFriendRequests, CreateFriendRequest, DeclineFriendRequest, UpdatePresenceStatus, GetPresenceStatusofFriends, GetPresenceSettings, UpdatePresenceSettings, GetChannel, GetChannelbyID, UpdateChannel, GetChannelEditors, GetChannelFollowers, GetChannelTeams, GetChannelSubscribers, CheckChannelSubscriptionbyUser, GetChannelVideos, StartChannelCommercial, ResetChannelStreamKey); void UserIDNotify(const StringValue& userID) override { Call(FN_UserIDNotify, userID); } void OAuthTokenNotify(const StringValue& token) override { Call(FN_OAuthTokenNotify, token); } void GetUser(const UserInfoValue& result) override { Call(FN_GetUser, result); } void ResetFriendsNotificationCountNotify(const Int64Value& result) override { Call(FN_ResetFriendsNotificationCountNotify, result); } void GetFriendNotificationCount(const Int64Value& result) override { Call(FN_GetFriendNotificationCount, result); } void GetFriendRecommendations(const FriendRecommendationValue& result) override { Call(FN_GetFriendRecommendations, result); } void GetFriends(const GetFriendValue& result) override { Call(FN_GetFriends, result); } void GetFriendStatus(const FriendStatusValue& result) override { Call(FN_GetFriendStatus, result); } void AcceptFriendRequest(const Int64Value& result) override { Call(FN_AcceptFriendRequest, result); } void GetFriendRequests(const FriendRequestValue& result) override { Call(FN_GetFriendRequests, result); } void CreateFriendRequest(const Int64Value& result) override { Call(FN_CreateFriendRequest, result); } void DeclineFriendRequest(const Int64Value& result) override { Call(FN_DeclineFriendRequest, result); } void UpdatePresenceStatus(const Int64Value& result) override { Call(FN_UpdatePresenceStatus, result); } void GetPresenceStatusofFriends(const PresenceStatusValue& result) override { Call(FN_GetPresenceStatusofFriends, result); } void GetPresenceSettings(const PresenceSettingsValue& result) override { Call(FN_GetPresenceSettings, result); } void UpdatePresenceSettings(const PresenceSettingsValue& result) override { Call(FN_UpdatePresenceSettings, result); } void GetChannelbyID(const ChannelInfoValue& result) override { Call(FN_GetChannelbyID, result); } void GetChannel(const ChannelInfoValue& result) override { Call(FN_GetChannel, result); } void UpdateChannel(const ChannelInfoValue& result) override { Call(FN_UpdateChannel, result); } void GetChannelEditors(const UserInfoListValue& result) override { Call(FN_GetChannelEditors, result); } void GetChannelFollowers(const FollowerResultValue& result) override { Call(FN_GetChannelFollowers, result); } void GetChannelTeams(const ChannelTeamValue& result) override { Call(FN_GetChannelTeams, result); } void GetChannelSubscribers(const SubscriberValue& result) override { Call(FN_GetChannelSubscribers, result); } void CheckChannelSubscriptionbyUser(const SubscriberbyUserValue& result) override { Call(FN_CheckChannelSubscriptionbyUser, result); } void GetChannelVideos(const VideoReturnValue& result) override { Call(FN_GetChannelVideos, result); } void StartChannelCommercial(const StartChannelCommercialValue& result) override { Call(FN_StartChannelCommercial, result); } void ResetChannelStreamKey(const ChannelInfoValue& result) override { Call(FN_ResetChannelStreamKey, result); } }; /* ** helper macro for reflecting the enums */ #define ENUM_CLASS_HELPER(className, enumName) Enum<(int)className::enumName>(#enumName) void Reflect(AZ::BehaviorContext & context) { /* ** Reflect the enum's */ context.Class<ResultCode>("ResultCode")-> ENUM_CLASS_HELPER(ResultCode, Success)-> ENUM_CLASS_HELPER(ResultCode, InvalidParam)-> ENUM_CLASS_HELPER(ResultCode, TwitchRESTError)-> ENUM_CLASS_HELPER(ResultCode, TwitchChannelNoUpdatesToMake)-> ENUM_CLASS_HELPER(ResultCode, Unknown) ; context.Class<PresenceAvailability>("PresenceAvailability")-> ENUM_CLASS_HELPER(PresenceAvailability, Unknown)-> ENUM_CLASS_HELPER(PresenceAvailability, Online)-> ENUM_CLASS_HELPER(PresenceAvailability, Idle) ; context.Class<PresenceActivityType>("PresenceActivityType")-> ENUM_CLASS_HELPER(PresenceActivityType, Unknown)-> ENUM_CLASS_HELPER(PresenceActivityType, Watching)-> ENUM_CLASS_HELPER(PresenceActivityType, Playing)-> ENUM_CLASS_HELPER(PresenceActivityType, Broadcasting) ; context.Class<BroadCastType>("BroadCastType")-> ENUM_CLASS_HELPER(BroadCastType, Default)-> ENUM_CLASS_HELPER(BroadCastType, Archive)-> ENUM_CLASS_HELPER(BroadCastType, Highlight)-> ENUM_CLASS_HELPER(BroadCastType, Upload)-> ENUM_CLASS_HELPER(BroadCastType, ArchiveAndHighlight)-> ENUM_CLASS_HELPER(BroadCastType, ArchiveAndUpload)-> ENUM_CLASS_HELPER(BroadCastType, ArchiveAndHighlightAndUpload)-> ENUM_CLASS_HELPER(BroadCastType, HighlightAndUpload) ; context.Class<CommercialLength>("CommercialLength")-> ENUM_CLASS_HELPER(CommercialLength, T30Seconds)-> ENUM_CLASS_HELPER(CommercialLength, T60Seconds)-> ENUM_CLASS_HELPER(CommercialLength, T90Seconds)-> ENUM_CLASS_HELPER(CommercialLength, T120Seconds)-> ENUM_CLASS_HELPER(CommercialLength, T150Seconds)-> ENUM_CLASS_HELPER(CommercialLength, T180Seconds) ; context.Class<ReceiptID>()-> Method("Equal", &ReceiptID::operator==)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Equal)-> Property("ID", &ReceiptID::GetID, &ReceiptID::SetID) ; context.Class<Int64Value>()-> Property("Value", [](const Int64Value& i64Value) { return i64Value.Value; }, nullptr)-> Property("Result", [](const Int64Value& i64Value) { return i64Value.Result; }, nullptr)-> Method("ToString", &Int64Value::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<Uint64Value>()-> Property("Value", [](const Uint64Value& u64Value) { return u64Value.Value; }, nullptr)-> Property("Result", [](const Uint64Value& u64Value) { return u64Value.Result; }, nullptr)-> Method("ToString", &Uint64Value::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<StringValue>()-> Property("Value", [](const StringValue& strValue) { return strValue.Value; }, nullptr)-> Property("Result", [](const StringValue& strValue) { return strValue.Result; }, nullptr)-> Method("ToString", &StringValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<UserNotifications>()-> Property("EMail", [](const UserNotifications& value) { return value.EMail; }, nullptr)-> Property("Push", [](const UserNotifications& value) { return value.Push; }, nullptr) ; context.Class<UserInfo>()-> Property("ID", [](const UserInfo& value) { return value.ID; }, nullptr)-> Property("Bio", [](const UserInfo& value) { return value.Bio; }, nullptr)-> Property("CreatedDate", [](const UserInfo& value) { return value.CreatedDate; }, nullptr)-> Property("DisplayName", [](const UserInfo& value) { return value.DisplayName; }, nullptr)-> Property("EMail", [](const UserInfo& value) { return value.EMail; }, nullptr)-> Property("Logo", [](const UserInfo& value) { return value.Logo; }, nullptr)-> Property("Name", [](const UserInfo& value) { return value.Name; }, nullptr)-> Property("ProfileBanner", [](const UserInfo& value) { return value.ProfileBanner; }, nullptr)-> Property("ProfileBannerBackgroundColor", [](const UserInfo& value) { return value.ProfileBannerBackgroundColor; }, nullptr)-> Property("Type", [](const UserInfo& value) { return value.Type; }, nullptr)-> Property("UpdatedDate", [](const UserInfo& value) { return value.UpdatedDate; }, nullptr)-> Property("Notifications", [](const UserInfo& value) { return value.Notifications; }, nullptr)-> Property("EMailVerified", [](const UserInfo& value) { return value.EMailVerified; }, nullptr)-> Property("Partnered", [](const UserInfo& value) { return value.Partnered; }, nullptr)-> Property("TwitterConnected", [](const UserInfo& value) { return value.TwitterConnected; }, nullptr) ; context.Class<UserInfoValue>()-> Property("Value", [](const UserInfoValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const UserInfoValue& value) { return value.Result; }, nullptr)-> Method("ToString", &UserInfoValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<FriendRecommendation>()-> Property("Reason", [](const FriendRecommendation& value) { return value.Reason; }, nullptr)-> Property("User", [](const FriendRecommendation& value) { return value.User; }, nullptr) ; context.Class<FriendRecommendationValue>()-> Property("Value", [](const FriendRecommendationValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const FriendRecommendationValue& value) { return value.Result; }, nullptr)-> Method("ToString", &FriendRecommendationValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<GetFriendReturn>()-> Property("Cursor", [](const GetFriendReturn& value) { return value.Cursor; }, nullptr)-> Property("Friends", [](const GetFriendReturn& value) { return value.Friends; }, nullptr) ; context.Class<GetFriendValue>()-> Property("Value", [](const GetFriendValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const GetFriendValue& value) { return value.Result; }, nullptr)-> Method("ToString", &GetFriendValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<FriendStatus>()-> Property("Status", [](const FriendStatus& value) { return value.Status; }, nullptr)-> Property("User", [](const FriendStatus& value) { return value.User; }, nullptr) ; context.Class<FriendStatusValue>()-> Property("Value", [](const FriendStatusValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const FriendStatusValue& value) { return value.Result; }, nullptr)-> Method("ToString", &FriendStatusValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<FriendRequest>()-> Property("IsRecommended", [](const FriendRequest& value) { return value.IsRecommended; }, nullptr)-> Property("IsStranger", [](const FriendRequest& value) { return value.IsStranger; }, nullptr)-> Property("NonStrangerReason", [](const FriendRequest& value) { return value.NonStrangerReason; }, nullptr)-> Property("RequestedDate", [](const FriendRequest& value) { return value.RequestedDate; }, nullptr)-> Property("User", [](const FriendRequest& value) { return value.User; }, nullptr) ; context.Class<FriendRequestResult>()-> Property("Total", [](const FriendRequestResult& value) { return value.Total; }, nullptr)-> Property("Cursor", [](const FriendRequestResult& value) { return value.Cursor; }, nullptr)-> Property("Requests", [](const FriendRequestResult& value) { return value.Requests; }, nullptr) ; context.Class<FriendRequestValue>()-> Property("Value", [](const FriendRequestValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const FriendRequestValue& value) { return value.Result; }, nullptr)-> Method("ToString", &FriendRequestValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<PresenceStatus>()-> Property("ActivityType", [](const PresenceStatus& value) { return value.ActivityType; }, nullptr)-> Property("Availability", [](const PresenceStatus& value) { return value.Availability; }, nullptr)-> Property("Index", [](const PresenceStatus& value) { return value.Index; }, nullptr)-> Property("UpdatedDate", [](const PresenceStatus& value) { return value.UpdatedDate; }, nullptr)-> Property("UserID", [](const PresenceStatus& value) { return value.UserID; }, nullptr) ; context.Class<PresenceStatusValue>()-> Property("Value", [](const PresenceStatusValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const PresenceStatusValue& value) { return value.Result; }, nullptr)-> Method("ToString", &PresenceStatusValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<PresenceSettings>()-> Property("IsInvisible", [](const PresenceSettings& value) { return value.IsInvisible; }, nullptr)-> Property("ShareActivity", [](const PresenceSettings& value) { return value.ShareActivity; }, nullptr) ; context.Class<PresenceSettingsValue>()-> Property("Value", [](const PresenceSettingsValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const PresenceSettingsValue& value) { return value.Result; }, nullptr)-> Method("ToString", &PresenceSettingsValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<ChannelInfo>()-> Property("NumFollowers", [](const ChannelInfo& value) { return value.NumFollowers; }, nullptr)-> Property("NumViews", [](const ChannelInfo& value) { return value.NumViews; }, nullptr)-> Property("NumItemsRecieved", [](const ChannelInfo& value) { return value.NumItemsRecieved; }, nullptr)-> Property("Partner", [](const ChannelInfo& value) { return value.Partner; }, nullptr)-> Property("Mature", [](const ChannelInfo& value) { return value.Mature; }, nullptr)-> Property("Id", [](const ChannelInfo& value) { return value.Id; }, nullptr)-> Property("BroadcasterLanguage", [](const ChannelInfo& value) { return value.BroadcasterLanguage; }, nullptr)-> Property("DisplayName", [](const ChannelInfo& value) { return value.DisplayName; }, nullptr)-> Property("eMail", [](const ChannelInfo& value) { return value.eMail; }, nullptr)-> Property("GameName", [](const ChannelInfo& value) { return value.GameName; }, nullptr)-> Property("Lanugage", [](const ChannelInfo& value) { return value.Lanugage; }, nullptr)-> Property("Logo", [](const ChannelInfo& value) { return value.Logo; }, nullptr)-> Property("Name", [](const ChannelInfo& value) { return value.Name; }, nullptr)-> Property("ProfileBanner", [](const ChannelInfo& value) { return value.ProfileBanner; }, nullptr)-> Property("ProfileBannerBackgroundColor", [](const ChannelInfo& value) { return value.ProfileBannerBackgroundColor; }, nullptr)-> Property("Status", [](const ChannelInfo& value) { return value.Status; }, nullptr)-> Property("StreamKey", [](const ChannelInfo& value) { return value.StreamKey; }, nullptr)-> Property("UpdatedDate", [](const ChannelInfo& value) { return value.UpdatedDate; }, nullptr)-> Property("CreatedDate", [](const ChannelInfo& value) { return value.CreatedDate; }, nullptr)-> Property("URL", [](const ChannelInfo& value) { return value.URL; }, nullptr)-> Property("VideoBanner", [](const ChannelInfo& value) { return value.VideoBanner; }, nullptr) ; context.Class<ChannelInfoValue>()-> Property("Value", [](const ChannelInfoValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const ChannelInfoValue& value) { return value.Result; }, nullptr)-> Method("ToString", &ChannelInfoValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<UpdateValuebool>()-> Property("Value", &UpdateValuebool::GetValue, &UpdateValuebool::SetValue)-> Method("ToBeUpdated", &UpdateValuebool::ToBeUpdated) ; context.Class<UpdateValueuint>()-> Property("Value", &UpdateValueuint::GetValue, &UpdateValueuint::SetValue)-> Method("ToBeUpdated", &UpdateValueuint::ToBeUpdated) ; context.Class<UpdateValuestring>()-> Property("Value", &UpdateValuestring::GetValue, &UpdateValuestring::SetValue)-> Method("ToBeUpdated", &UpdateValuestring::ToBeUpdated) ; context.Class<ChannelUpdateInfo>()-> Property("ChannelFeedEnabled", BehaviorValueProperty(&ChannelUpdateInfo::ChannelFeedEnabled))-> Property("Delay", BehaviorValueProperty(&ChannelUpdateInfo::Delay))-> Property("Status", BehaviorValueProperty(&ChannelUpdateInfo::Status))-> Property("GameName", BehaviorValueProperty(&ChannelUpdateInfo::GameName)) ; context.Class<UserInfoListValue>()-> Property("Value", [](const UserInfoListValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const UserInfoListValue& value) { return value.Result; }, nullptr)-> Method("ToString", &UserInfoListValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<Follower>()-> Property("Notifications", [](const Follower& value) { return value.Notifications; }, nullptr)-> Property("CreatedDate", [](const Follower& value) { return value.CreatedDate; }, nullptr)-> Property("User", [](const Follower& value) { return value.User; }, nullptr) ; context.Class<FollowerResult>()-> Property("Total", [](const FollowerResult& value) { return value.Total; }, nullptr)-> Property("Cursor", [](const FollowerResult& value) { return value.Cursor; }, nullptr)-> Property("Followers", [](const FollowerResult& value) { return value.Followers; }, nullptr) ; context.Class<FollowerResultValue>()-> Property("Value", [](const FollowerResultValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const FollowerResultValue& value) { return value.Result; }, nullptr)-> Method("ToString", &FollowerResultValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<TeamInfo>()-> Property("ID", [](const TeamInfo& value) { return value.ID; }, nullptr)-> Property("Background", [](const TeamInfo& value) { return value.Background; }, nullptr)-> Property("Banner", [](const TeamInfo& value) { return value.Banner; }, nullptr)-> Property("CreatedDate", [](const TeamInfo& value) { return value.CreatedDate; }, nullptr)-> Property("DisplayName", [](const TeamInfo& value) { return value.DisplayName; }, nullptr)-> Property("Info", [](const TeamInfo& value) { return value.Info; }, nullptr)-> Property("Logo", [](const TeamInfo& value) { return value.Logo; }, nullptr)-> Property("Name", [](const TeamInfo& value) { return value.Name; }, nullptr)-> Property("UpdatedDate", [](const TeamInfo& value) { return value.UpdatedDate; }, nullptr) ; context.Class<ChannelTeamValue>()-> Property("Value", [](const ChannelTeamValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const ChannelTeamValue& value) { return value.Result; }, nullptr)-> Method("ToString", &ChannelTeamValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<SubscriberInfo>()-> Property("ID", [](const SubscriberInfo& value) { return value.ID; }, nullptr)-> Property("CreatedDate", [](const SubscriberInfo& value) { return value.CreatedDate; }, nullptr)-> Property("User", [](const SubscriberInfo& value) { return value.User; }, nullptr) ; context.Class<Subscription>()-> Property("Total", [](const Subscription& value) { return value.Total; }, nullptr)-> Property("Subscribers", [](const Subscription& value) { return value.Subscribers; }, nullptr) ; context.Class<SubscriberValue>()-> Property("Value", [](const SubscriberValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const SubscriberValue& value) { return value.Result; }, nullptr)-> Method("ToString", &SubscriberValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<SubscriberbyUserValue>()-> Property("Value", [](const SubscriberbyUserValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const SubscriberbyUserValue& value) { return value.Result; }, nullptr)-> Method("ToString", &SubscriberbyUserValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<VideoChannelInfo>()-> Property("ID", [](const VideoChannelInfo& value) { return value.ID; }, nullptr)-> Property("DisplayName", [](const VideoChannelInfo& value) { return value.DisplayName; }, nullptr)-> Property("Name", [](const VideoChannelInfo& value) { return value.Name; }, nullptr) ; context.Class<FPSInfo>()-> Property("Chunked", [](const FPSInfo& value) { return value.Chunked; }, nullptr)-> Property("High", [](const FPSInfo& value) { return value.High; }, nullptr)-> Property("Low", [](const FPSInfo& value) { return value.Low; }, nullptr)-> Property("Medium", [](const FPSInfo& value) { return value.Medium; }, nullptr)-> Property("Mobile", [](const FPSInfo& value) { return value.Mobile; }, nullptr) ; context.Class<PreviewInfo>()-> Property("Large", [](const PreviewInfo& value) { return value.Large; }, nullptr)-> Property("Medium", [](const PreviewInfo& value) { return value.Medium; }, nullptr)-> Property("Small", [](const PreviewInfo& value) { return value.Small; }, nullptr)-> Property("Template", [](const PreviewInfo& value) { return value.Template; }, nullptr) ; context.Class<ResolutionsInfo>()-> Property("Chunked", [](const ResolutionsInfo& value) { return value.Chunked; }, nullptr)-> Property("High", [](const ResolutionsInfo& value) { return value.High; }, nullptr)-> Property("Low", [](const ResolutionsInfo& value) { return value.Low; }, nullptr)-> Property("Medium", [](const ResolutionsInfo& value) { return value.Medium; }, nullptr)-> Property("Mobile", [](const ResolutionsInfo& value) { return value.Mobile; }, nullptr) ; context.Class<ThumbnailInfo>()-> Property("Type", [](const ThumbnailInfo& value) { return value.Type; }, nullptr)-> Property("Url", [](const ThumbnailInfo& value) { return value.Url; }, nullptr) ; context.Class<ThumbnailsInfo>()-> Property("Large", [](const ThumbnailsInfo& value) { return value.Large; }, nullptr)-> Property("Medium", [](const ThumbnailsInfo& value) { return value.Medium; }, nullptr)-> Property("Small", [](const ThumbnailsInfo& value) { return value.Small; }, nullptr)-> Property("Template", [](const ThumbnailsInfo& value) { return value.Template; }, nullptr) ; context.Class<VideoInfo>()-> Property("Length", [](const VideoInfo& value) { return value.Length; }, nullptr)-> Property("Views", [](const VideoInfo& value) { return value.Views; }, nullptr)-> Property("BroadcastID", [](const VideoInfo& value) { return value.BroadcastID; }, nullptr)-> Property("Type", [](const VideoInfo& value) { return value.Type; }, nullptr)-> Property("CreatedDate", [](const VideoInfo& value) { return value.CreatedDate; }, nullptr)-> Property("Description", [](const VideoInfo& value) { return value.Description; }, nullptr)-> Property("DescriptionHTML", [](const VideoInfo& value) { return value.DescriptionHTML; }, nullptr)-> Property("ID", [](const VideoInfo& value) { return value.ID; }, nullptr)-> Property("Game", [](const VideoInfo& value) { return value.Game; }, nullptr)-> Property("Language", [](const VideoInfo& value) { return value.Language; }, nullptr)-> Property("PublishedDate", [](const VideoInfo& value) { return value.PublishedDate; }, nullptr)-> Property("Status", [](const VideoInfo& value) { return value.Status; }, nullptr)-> Property("TagList", [](const VideoInfo& value) { return value.TagList; }, nullptr)-> Property("Title", [](const VideoInfo& value) { return value.Title; }, nullptr)-> Property("URL", [](const VideoInfo& value) { return value.URL; }, nullptr)-> Property("Viewable", [](const VideoInfo& value) { return value.Viewable; }, nullptr)-> Property("ViewableAt", [](const VideoInfo& value) { return value.ViewableAt; }, nullptr)-> Property("Channel", [](const VideoInfo& value) { return value.Channel; }, nullptr)-> Property("FPS", [](const VideoInfo& value) { return value.FPS; }, nullptr)-> Property("Preview", [](const VideoInfo& value) { return value.Preview; }, nullptr)-> Property("Thumbnails", [](const VideoInfo& value) { return value.Thumbnails; }, nullptr)-> Property("Resolutions", [](const VideoInfo& value) { return value.Resolutions; }, nullptr) ; context.Class<VideoReturn>()-> Property("Total", [](const VideoReturn& value) { return value.Total; }, nullptr)-> Property("Videos", [](const VideoReturn& value) { return value.Videos; }, nullptr) ; context.Class<VideoReturnValue>()-> Property("Value", [](const VideoReturnValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const VideoReturnValue& value) { return value.Result; }, nullptr)-> Method("ToString", &VideoReturnValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<StartChannelCommercialResult>()-> Property("Duration", [](const StartChannelCommercialResult& value) { return value.Duration; }, nullptr)-> Property("RetryAfter", [](const StartChannelCommercialResult& value) { return value.RetryAfter; }, nullptr)-> Property("Message", [](const StartChannelCommercialResult& value) { return value.Message; }, nullptr) ; context.Class<StartChannelCommercialValue>()-> Property("Value", [](const StartChannelCommercialValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const StartChannelCommercialValue& value) { return value.Result; }, nullptr)-> Method("ToString", &StartChannelCommercialValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<CommunityInfo>()-> Property("ID", [](const CommunityInfo& value) { return value.ID; }, nullptr)-> Property("AvatarImageURL", [](const CommunityInfo& value) { return value.AvatarImageURL; }, nullptr)-> Property("CoverImageURL", [](const CommunityInfo& value) { return value.CoverImageURL; }, nullptr)-> Property("Description", [](const CommunityInfo& value) { return value.Description; }, nullptr)-> Property("DescriptionHTML", [](const CommunityInfo& value) { return value.DescriptionHTML; }, nullptr)-> Property("Language", [](const CommunityInfo& value) { return value.Language; }, nullptr)-> Property("Name", [](const CommunityInfo& value) { return value.Name; }, nullptr)-> Property("OwnerID", [](const CommunityInfo& value) { return value.OwnerID; }, nullptr)-> Property("Rules", [](const CommunityInfo& value) { return value.Rules; }, nullptr)-> Property("RulesHTML", [](const CommunityInfo& value) { return value.RulesHTML; }, nullptr)-> Property("Summary", [](const CommunityInfo& value) { return value.Summary; }, nullptr) ; context.Class<CommunityInfoValue>()-> Property("Value", [](const CommunityInfoValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const CommunityInfoValue& value) { return value.Result; }, nullptr)-> Method("ToString", &CommunityInfoValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.Class<CommunityInfoReturn>()-> Property("Total", [](const CommunityInfoReturn& value) { return value.Total; }, nullptr)-> Property("Communities", [](const CommunityInfoReturn& value) { return value.Communities; }, nullptr) ; context.Class<CommunityInfoReturnValue>()-> Property("Value", [](const CommunityInfoReturnValue& value) { return value.Value; }, nullptr)-> Property("Result", [](const CommunityInfoReturnValue& value) { return value.Result; }, nullptr)-> Method("ToString", &CommunityInfoReturnValue::ToString)-> Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) ; context.EBus<TwitchRequestBus>("TwitchRequestBus") ->Event("SetApplicationID", &TwitchRequestBus::Events::SetApplicationID) ->Event("GetApplicationID", &TwitchRequestBus::Events::GetApplicationID) ->Event("GetUserID", &TwitchRequestBus::Events::GetUserID) ->Event("GetOAuthToken", &TwitchRequestBus::Events::GetOAuthToken) ->Event("GetSessionID", &TwitchRequestBus::Events::GetSessionID) ->Event("SetUserID", &TwitchRequestBus::Events::SetUserID) ->Event("SetOAuthToken", &TwitchRequestBus::Events::SetOAuthToken) ->Event("RequestUserID", &TwitchRequestBus::Events::RequestUserID) ->Event("RequestOAuthToken", &TwitchRequestBus::Events::RequestOAuthToken) ->Event("GetUser", &TwitchRequestBus::Events::GetUser) ->Event("ResetFriendsNotificationCount", &TwitchRequestBus::Events::ResetFriendsNotificationCount) ->Event("GetFriendNotificationCount", &TwitchRequestBus::Events::GetFriendNotificationCount) ->Event("GetFriendRecommendations", &TwitchRequestBus::Events::GetFriendRecommendations) ->Event("GetFriends", &TwitchRequestBus::Events::GetFriends) ->Event("GetFriendStatus", &TwitchRequestBus::Events::GetFriendStatus) ->Event("AcceptFriendRequest", &TwitchRequestBus::Events::AcceptFriendRequest) ->Event("GetFriendRequests", &TwitchRequestBus::Events::GetFriendRequests) ->Event("CreateFriendRequest", &TwitchRequestBus::Events::CreateFriendRequest) ->Event("DeclineFriendRequest", &TwitchRequestBus::Events::DeclineFriendRequest) ->Event("UpdatePresenceStatus", &TwitchRequestBus::Events::UpdatePresenceStatus) ->Event("GetPresenceStatusofFriends", &TwitchRequestBus::Events::GetPresenceStatusofFriends) ->Event("GetPresenceSettings", &TwitchRequestBus::Events::GetPresenceSettings) ->Event("UpdatePresenceSettings", &TwitchRequestBus::Events::UpdatePresenceSettings) ->Event("GetChannel", &TwitchRequestBus::Events::GetChannel) ->Event("GetChannelbyID", &TwitchRequestBus::Events::GetChannelbyID) ->Event("UpdateChannel", &TwitchRequestBus::Events::UpdateChannel) ->Event("GetChannelEditors", &TwitchRequestBus::Events::GetChannelEditors) ->Event("GetChannelFollowers", &TwitchRequestBus::Events::GetChannelFollowers) ->Event("GetChannelTeams", &TwitchRequestBus::Events::GetChannelTeams) ->Event("GetChannelSubscribers", &TwitchRequestBus::Events::GetChannelSubscribers) ->Event("CheckChannelSubscriptionbyUser", &TwitchRequestBus::Events::CheckChannelSubscriptionbyUser) ->Event("GetChannelVideos", &TwitchRequestBus::Events::GetChannelVideos) ->Event("StartChannelCommercial", &TwitchRequestBus::Events::StartChannelCommercial) ->Event("ResetChannelStreamKey", &TwitchRequestBus::Events::ResetChannelStreamKey) ; context.EBus<TwitchNotifyBus>("TwitchNotifyBus") ->Handler<BehaviorTwitchNotifyBus>(); } } }