Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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());
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }