public YouTubeMasterResponse buildYoutubeResponse(string responseBody) { YouTubeMasterResponse result = new YouTubeMasterResponse(); try { JObject youTubeObject = JObject.Parse(responseBody); result = youTubeObject.ToObject <YouTubeMasterResponse>(); IList <JToken> ListResults = youTubeObject["items"].Children().ToList(); int i = 0; foreach (var item in ListResults) { result.snippits.Add(item["snippet"].ToObject <snippit>()); result.snippits[i].url = item["snippet"]["thumbnails"]["default"]["url"].ToObject <string>(); if (item["id"]["videoId"] != null) { result.snippits[i].videoId = item["id"]["videoId"].ToObject <string>(); } //stop chennelid auto population just incase issue arises. if (item["id"]["channelId"] != null) { result.snippits[i].channelId = item["id"]["channelId"].ToObject <string>(); } i++; } } catch (Exception ex) { StringBuilder errorBuilder = new StringBuilder(); errorBuilder.AppendLine("We have had an error creating the YoutubeObject"); errorBuilder.AppendLine(ex.Message); throw new Exception($"{errorBuilder.ToString()}"); } return(result); }
public async Task UseNextTokenAsync() { YouTubeMasterResponse result = new YouTubeMasterResponse(); YouTubeMasterResponse resultNextPage = new YouTubeMasterResponse(); string responseBody = await GetYouTubeData("https://www.googleapis.com/youtube/v3/search?part=snippet&q=surf&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); StringBuilder youtubeQuery = new StringBuilder(); try { JObject youTubeObject = JObject.Parse(responseBody); result = youTubeObject.ToObject <YouTubeMasterResponse>(); // go to the next page youtubeQuery.Append("https://www.googleapis.com/youtube/v3/search?part=snippet"); youtubeQuery.Append($"&pageToken={result.nextPageToken}"); youtubeQuery.Append("&q=surf"); youtubeQuery.Append($"&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); responseBody = await GetYouTubeData(youtubeQuery.ToString()); JObject youTubeObjectNextPage = JObject.Parse(responseBody); resultNextPage = youTubeObjectNextPage.ToObject <YouTubeMasterResponse>(); } catch (Exception ex) { throw new Exception($"Error {ex.Message}"); } Assert.True(result.nextPageToken != resultNextPage.nextPageToken); Assert.True(!string.IsNullOrEmpty(resultNextPage.prevPageToken)); }
public async Task GetYoutubeObject() { string responseBody = await GetYouTubeData("https://www.googleapis.com/youtube/v3/search?part=snippet&q=surf&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); // deserialise Json headers into Master response. YouTubeMasterResponse result = buildYoutubeResponse(responseBody); Assert.True(result.snippits.Count == 5); Assert.True(string.IsNullOrEmpty(result.error)); }
public async Task GetYoutubeVideoId() { string responseBody = await GetYouTubeData("https://www.googleapis.com/youtube/v3/search?part=snippet&q=surf&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); // deserialise Json headers into Master response. YouTubeMasterResponse result = buildYoutubeResponse(responseBody); // some youtube channeles do not have a video ID, but all should have a channel ID. //ChannelID has also populated without a cast Assert.True(!string.IsNullOrEmpty(result.snippits[4].videoId)); }
public async Task SearchAndBuildObjectAsync() { YouTubeMasterResponse result = new YouTubeMasterResponse(); string responseBody = await GetYouTubeData("https://www.googleapis.com/youtube/v3/search?part=snippet&q=surf&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); try { JObject youTubeObject = JObject.Parse(responseBody); result = youTubeObject.ToObject <YouTubeMasterResponse>(); } catch (Exception ex) { throw new Exception($"Error {ex.Message}"); } Assert.True(result != new YouTubeMasterResponse()); }
public async Task UsePrviouseTokenAsync() { YouTubeMasterResponse result = new YouTubeMasterResponse(); YouTubeMasterResponse resultPrevPage = new YouTubeMasterResponse(); StringBuilder youtubeQuery = new StringBuilder(); try { string responseBody = await GetYouTubeData("https://www.googleapis.com/youtube/v3/search?part=snippet&q=surf&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); JObject youTubeObject = JObject.Parse(responseBody); //go to next page result = youTubeObject.ToObject <YouTubeMasterResponse>(); youtubeQuery.Append("https://www.googleapis.com/youtube/v3/search?part=snippet"); youtubeQuery.Append($"&pageToken={result.nextPageToken}"); youtubeQuery.Append("&q=surf"); youtubeQuery.Append($"&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); responseBody = await GetYouTubeData(youtubeQuery.ToString()); JObject youTubeObjectNextPage = JObject.Parse(responseBody); YouTubeMasterResponse resultNextPage = youTubeObjectNextPage.ToObject <YouTubeMasterResponse>(); // go back to orginal page. youtubeQuery = new StringBuilder(); youtubeQuery.Append("https://www.googleapis.com/youtube/v3/search?part=snippet"); youtubeQuery.Append($"&pageToken={resultNextPage.prevPageToken}"); youtubeQuery.Append("&q=surf"); youtubeQuery.Append($"&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); responseBody = await GetYouTubeData(youtubeQuery.ToString()); JObject youTubeObjectPrevPage = JObject.Parse(responseBody); resultPrevPage = youTubeObjectPrevPage.ToObject <YouTubeMasterResponse>(); } catch (Exception ex) { throw new Exception($"Error {ex.Message}"); } //page tokens should be the same. Assert.True(result.nextPageToken == resultPrevPage.nextPageToken); }
public async Task GetSnippetAsync() { YouTubeMasterResponse result = new YouTubeMasterResponse(); try { string responseBody = await GetYouTubeData("https://www.googleapis.com/youtube/v3/search?part=snippet&q=surf&key=AIzaSyB7MgMx73OCowlgVGIKiXEb94gumnYqh1Q"); // deserialise Json headers into Master response. JObject youTubeObject = JObject.Parse(responseBody); IList <JToken> ListResults = youTubeObject["items"].Children().ToList(); foreach (var item in ListResults) { result.snippits.Add(item["snippet"].ToObject <snippit>()); } } catch (Exception ex) { throw new Exception($"Error {ex.Message}"); } Assert.True(result.snippits.Count > 1); }
/// <summary> /// Main method. /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <YouTubeMasterResponse> runGetQuery(string query) { YouTubeMasterResponse YoutubeResponse = new YouTubeMasterResponse(); try { YoutubeQuery youtubeQuery = new YoutubeQuery(); YoutubeResponse youtubeResponse = new YoutubeResponse(); YoutubeGetRequest getRequest = new YoutubeGetRequest(); string builtQuery = youtubeQuery.build(_appDetails, query); return(youtubeResponse.buildResponse(await getRequest.GetYouTubeData(builtQuery))); } catch (Exception ex) { YoutubeResponse.Error = true; //email error SendGridEmailer gridEmailer = new SendGridEmailer(); await gridEmailer.SendEmail(_appDetails.EmailKey, ex.Message); } finally { } return(YoutubeResponse); }