static void RegisterTwitchViewerCallback(object sender, DownloadStringCompletedEventArgs eventArgs) { if (eventArgs.Error != null) { throw new Exception("Viewers twitch id could not be retrieved"); } if (eventArgs.Result != null) { Helper.Log("Twitch Viewer Info: " + eventArgs.Result); } JSONNode resultNode = JSON.Parse(eventArgs.Result); if (resultNode != null) { int channel_id = resultNode["channel_id"].AsInt; string username = resultNode["user_name"]; TwitchViewer newViewer = new TwitchViewer(channel_id, username); if (viewersBeingRegistered.Contains(newViewer.Username.ToLower())) { viewersBeingRegistered.Remove(newViewer.Username.ToLower()); } else { throw new Exception(newViewer.Username.CapitalizeFirst() + " was registered as a viewer but was not in the viewers being registered list"); } Helper.Log(newViewer.Username.CapitalizeFirst() + " has been registed as a twitch viewer"); } }
public static TwitchViewer GetTwitchViewer(string username) { TwitchViewer viewer = AllTwitchViewers.Find(s => s.Username == username); if (viewer == null) { RegisterTwitchUser(username); } return(viewer); }
public static TwitchViewer GetTwitchViewer(int twitchId, string username = "") { TwitchViewer findViewer = AllTwitchViewers.Find(s => s.TwitchId == twitchId); if (findViewer == null && username != "") { if (username == "") { throw new Exception("Twitch Viewer not found with id and no username provided to create new Twitch Viewer"); } return(new TwitchViewer(twitchId, username)); } return(findViewer); }
// Callback Parse for Twitch API call static void ParseActiveViewers(object sender, DownloadStringCompletedEventArgs eventArgs) { state = RefreshViewerState.PARSING; if (eventArgs.Error != null) { throw new Exception("No chatters received from tmi.twitch.tv API - This can be ignored most of the time"); } if (eventArgs.Result != null) { Helper.Log("Twitch Active Chatters API: " + eventArgs.Result); } List <string> viewers = new List <string>(); // Parse chatters from list JSONNode resultNode = JSON.Parse(eventArgs.Result); if (resultNode["chatters"] != null) { JSONNode chatters = resultNode["chatters"]; string[] viewerTypes = { "broadcaster", "vips", "moderators", "staff", "admins", "global_mods", "viewers" }; foreach (string type in viewerTypes) { for (int i = 0; i < chatters[type].Count; i++) { Active.Add(TwitchViewer.GetViewer(chatters[type][i])); } } } state = RefreshViewerState.FINISHED; }