Exemple #1
0
        //this is async/void because it is an event handler
        public async void PollTwitchAPI(object source, ElapsedEventArgs e)
        {
            TwitchTokenData tokenData = await GetTokenAsync();

            TwitchAPIData data = await RequestTwitchDataAsync(tokenData);


            //checks if BotToilet is streaming and that the message explaining so has not been sent already
            if (data.Data.Length != 0 && !alreadySentMessage)
            {
                //standard embed building
                EmbedAuthorBuilder embedAuthorBuilder = new EmbedAuthorBuilder()
                {
                    Name = "BotToilet is now streaming!",
                    Url  = "https://www.twitch.tv/bottoilet"
                };


                EmbedBuilder embedBuilder = new EmbedBuilder()
                {
                    Author      = embedAuthorBuilder,
                    Color       = new Color?(Color.Purple),
                    ImageUrl    = "https://static-cdn.jtvnw.net/previews-ttv/live_user_bottoilet-1920x1080.jpg?r=" + new Random().Next().ToString(), //cache buster
                    Description = "https://www.twitch.tv/bottoilet"
                };
                embedBuilder.AddField("Title", data.Data[0].Title, true);
                embedBuilder.AddField("Started (Eastern Time):", data.Data[0].StartedAt.ToLocalTime(), true);

                //gets the streaming channel and send messages
                channel = client.GetChannel(streamingChannelId) as ISocketMessageChannel;
                await channel.SendMessageAsync("BotToilet has gone live on Twitch!", embed: embedBuilder.Build());

                alreadySentMessage = true;
            }
            //checks if BotToilet went offline thus resetting the alreadySentMessgae flag
            else if (data.Data.Length == 0 && alreadySentMessage)
            {
                alreadySentMessage = false;
            }

            await RevokeTokenAsync(tokenData);
        }
Exemple #2
0
        private async Task <TwitchAPIData> RequestTwitchDataAsync(TwitchTokenData tokenData)
        {
            this.httpClient.DefaultRequestHeaders.Add("Client-ID", clientId);
            this.httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + tokenData.AccessToken);
            string url = "https://api.twitch.tv/helix/streams?user_login=bottoilet";


            //makes request and ensures success
            HttpResponseMessage response = await this.httpClient.GetAsync(url);

            response.EnsureSuccessStatusCode();

            //converts JSON to TwitchAPIData
            string resp = await response.Content.ReadAsStringAsync();

            TwitchAPIData data = JsonConvert.DeserializeObject <TwitchAPIData>(resp);

            //Clean up
            this.httpClient.DefaultRequestHeaders.Clear();

            return(data);
        }
Exemple #3
0
 private async Task RevokeTokenAsync(TwitchTokenData tokenData)
 {
     //revokes oautho token
     await httpClient.PostAsync($"https://id.twitch.tv/oauth2/revoke?client_id={clientId}&token=" + tokenData.AccessToken, new StringContent(""));
 }