public static IYoutubeItem Details(this YoutubeSearchResult searchResult) { switch (searchResult.ResultKind) { case ResourceKind.Video: return(Video(searchResult.Id)); case ResourceKind.Playlist: return(Playlist(searchResult.Id)); case ResourceKind.Channel: return(Channel(searchResult.Id)); default: throw new InvalidOperationException(); } }
public Task <YoutubeSearchResult> Search(YoutubeSearchCriteria criteria) { var query = _repository.YoutubeVideos; if (!criteria.SearchPhrase.IsNullOrEmpty()) { query = query.Where(x => x.VideoTitle.Contains(criteria.SearchPhrase)); } var videoIds = query.Skip(criteria.Skip) .Take(criteria.Take) .Select(x => x.Id) .ToList(); var result = new YoutubeSearchResult { TotalCount = _repository.YoutubeVideos.Count(), Results = _repository.YoutubeVideos.Where(x => videoIds.Contains(x.Id)).ToArray().OrderBy(x => videoIds.IndexOf(x.Id)).ToList() }; return(Task.FromResult(result)); }
public static TItem Details <TItem>(this YoutubeSearchResult searchResult) where TItem : class, IYoutubeItem { return(Details(searchResult) as TItem); }