Ejemplo n.º 1
0
        public async Task <IActionResult> Get(string query)
        {
            YouTubeResponseViewModel result = await _youTubeService.SearchAsync(query, pageSize);

            if (!result.IsSuccess)
            {
                return(BadRequest(CreateBadRequest("Não foi possível obter informações do YouTube!")));
            }
            try
            {
                return(Ok(await GravarHistoricos(result)));
            }
            catch (ArgumentNullException ex)
            {
                return(BadRequest(CreateBadRequest(ex.Message)));
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(CreateBadRequest(ex.Message)));
            }
            catch (ServiceException ex)
            {
                return(BadRequest(CreateBadRequest(ex.Message)));
            }
        }
Ejemplo n.º 2
0
        private async Task GravarHistoricoVideos(YouTubeResponseViewModel result)
        {
            var lista = result.Items
                        .Where(w => w.Tipo == ResultType.Video)
                        .Select(s => s.YoutubeVideoId)
                        .ToList();
            var videosDetails = await _youTubeService.GetVideosByIdsAsync(lista);

            await _videoService.SincronizarVideosAsync(videosDetails);
        }
Ejemplo n.º 3
0
        private async Task GravarHistoricoCanal(YouTubeResponseViewModel result)
        {
            var lista = result.Items
                        .Where(w => w.Tipo == ResultType.Canal)
                        .Select(s => (CanalSearchResultViewModel)s)
                        .ToList();
            await _canalService.SincronizarCanaisAsync(lista);

            var listRemoved = lista.Where(x => x.IncludeInList == false);

            foreach (var item in listRemoved)
            {
                result.Items.Remove(item);
            }
        }
        public YouTubeResponseViewModel BuscaVideos(string pesquisa)
        {
            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey          = "Chave_API",
                ApplicationName = "Chave de API 1"
            });

            var searchListRequest = youtubeService.Search.List("snippet");

            searchListRequest.Q          = pesquisa;
            searchListRequest.Order      = SearchResource.ListRequest.OrderEnum.Relevance;
            searchListRequest.MaxResults = 10;

            var searchListResponse = searchListRequest.Execute();

            var responseViewModel = new YouTubeResponseViewModel
            {
                Etag          = searchListResponse.ETag,
                Kind          = searchListResponse.Kind,
                NextPageToken = searchListResponse.NextPageToken,
                RegionCode    = searchListResponse.RegionCode,
                TotalResults  = searchListResponse.PageInfo.TotalResults,
                Items         = new List <ItemViewModel>()
            };

            foreach (var item in searchListResponse.Items)
            {
                responseViewModel.Items.Add(new ItemViewModel
                {
                    Description        = item.Snippet.Description,
                    MediumThumbnailUrl = item.Snippet.Thumbnails.Medium.Url,
                    PublishedAt        = item.Snippet.PublishedAt.Value,
                    Title       = item.Snippet.Title,
                    ChanelTitle = item.Snippet.ChannelTitle
                });
            }


            return(responseViewModel);
        }
        public async Task SearchAsync_Falha_Requisicao()
        {
            YouTubeResponseViewModel result = await _youtubeClientComChaveErrada.SearchAsync(_SEARCH_QUERY, 5);

            Assert.AreEqual(false, result.IsSuccess);
        }
Ejemplo n.º 6
0
        private async Task <ResponseRoot <YouTubeResponseViewModel> > GravarHistoricos(YouTubeResponseViewModel result)
        {
            await GravarHistoricoCanal(result);
            await GravarHistoricoVideos(result);

            return(new ResponseRoot <YouTubeResponseViewModel>()
            {
                Data = result
            });
        }