private async Task RenderElementsInListAsync(PageFlagEnum flag) { PlaylistModel playlist = (PlaylistModel)PlaylistComboBox.SelectedItem; var json = await RequestPlaylistItemsAsync(playlist, flag); System.Diagnostics.Debug.WriteLine((string)Convert.ToString(json)); // Dinamically generate the ListBox Elements based on the api response playlist.Videos = new List <VideoModel>(); foreach (var x in json.items) { if (Convert.ToString(x.snippet.title) != "Private video") { playlist.Videos.Add(new VideoModel( Convert.ToString(x.snippet.thumbnails.medium.url), Convert.ToString(x.snippet.title), Convert.ToString(x.snippet.resourceId.videoId), Convert.ToString(x.snippet.channelTitle), Convert.ToString(x.snippet.publishedAt))); } } if (!string.IsNullOrEmpty(Convert.ToString(json.nextPageToken))) { playlist.NextPageToken = Convert.ToString(json.nextPageToken); NextQueryButton.Visibility = Visibility.Visible; } else { playlist.NextPageToken = ""; NextQueryButton.Visibility = Visibility.Hidden; } if (!string.IsNullOrEmpty(Convert.ToString(json.prevPageToken))) { playlist.PrevPageToken = Convert.ToString(json.prevPageToken); PrevQueryButton.Visibility = Visibility.Visible; } else { playlist.PrevPageToken = ""; PrevQueryButton.Visibility = Visibility.Hidden; } ListBox.ItemsSource = playlist.Videos; }
private async Task <dynamic> RequestPlaylistItemsAsync(PlaylistModel playlist, PageFlagEnum flag) { if (Properties.Settings.Default.AccessTokenCreationDate.AddSeconds(3900) < DateTime.Now) { Authenticator.RefreshToken(); } // add token refresh logic string pageToken = ""; switch (flag) { case PageFlagEnum.Current: break; case PageFlagEnum.Next: pageToken = playlist.NextPageToken; break; case PageFlagEnum.Prev: pageToken = playlist.PrevPageToken; break; } string requestPlaylistUri = string.Format("https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=5&playlistId={0}&pageToken={1}", playlist.PlaylistId, pageToken); HttpWebRequest requestPlaylist = (HttpWebRequest)WebRequest.Create(requestPlaylistUri); requestPlaylist.Method = "GET"; requestPlaylist.Headers.Add(string.Format("Authorization: Bearer {0}", Properties.Settings.Default.AccessToken)); requestPlaylist.ContentType = "application/x-www-form-urlencoded"; requestPlaylist.Accept = "Accept=text/html,application/xhtml+xml,applicaton/xml;q=0.9*/*;q=0.8"; WebResponse playlistResponse = await requestPlaylist.GetResponseAsync(); using (StreamReader userInfoResponseReader = new StreamReader(playlistResponse.GetResponseStream())) { // reads response body string userInfoResponseText = await userInfoResponseReader.ReadToEndAsync(); var JsonResponse = JsonConvert.DeserializeObject <dynamic>(userInfoResponseText); return(JsonResponse); } }