private static IEnumerable<Movie> DoSearch(Func<MovieSearchCriteria, IEnumerable<Movie>> searchMovies, MovieSearchCriteria movieSearchCriteria, string providerName) { Logger.InfoFormat("Seaching {0}...", providerName); var results = searchMovies(movieSearchCriteria); Logger.InfoFormat("based on the following criteria: {0} {1} returned: {2} results ", movieSearchCriteria, providerName, results.Count()); return results; }
public IEnumerable<Movie> Search(MovieSearchCriteria criteria) { var results = new Dictionary<string, IEnumerable<Movie>>(); foreach (var provider in movieProviders) { var movies = DoSearch(provider.SearchMovies, criteria, provider.Name); results.Add(provider.Name, movies); } return MergeResults(results["Netflix"], results["Rotten Tomatoes"]); }
private static IEnumerable<Title> DoSearch(NetflixCatalog context, MovieSearchCriteria criteria) { var movies = new List<Title>(); if (!string.IsNullOrWhiteSpace(criteria.Title)) { movies = context.Titles.Expand("Cast").Where(t => t.Name.ToLower().Equals(criteria.Title.ToLower())).Select(t => t).ToList(); if (!movies.Any()) { movies =context.Titles.Expand("Cast").Where(t => t.Name.ToLower().Contains(criteria.Title.ToLower())).Select(t => t).ToList(); } return movies; } if (!string.IsNullOrWhiteSpace(criteria.Genre)) { var genreList = GenreMap.GetMap(criteria.Genre); var genre = genreList.First(); var byGenre = context.Genres.Expand("Titles/Cast").Where(g => g.Name.Equals(genre)).ToList(); var titles = byGenre.SelectMany(g => g.Titles.ToList()); movies = new List<Title>(titles); return movies.ToList(); } if (criteria.Key!=null) { var id = criteria.Key.NetflixId; if (!string.IsNullOrWhiteSpace(id)) { try { movies = context.Titles.Expand("Cast").Where(t => t.Id.Equals(id)).ToList(); } catch (Exception e) { Logger.Error(e); } } } return movies; }
public IEnumerable<Movie> SearchMovies(MovieSearchCriteria criteria) { var netflixUri = new Uri("http://odata.netflix.com/Catalog/"); var context = new NetflixCatalog(netflixUri); var titlesList = DoSearch(context, criteria); var movies = titlesList.Select(m => new Movie { ProviderMovieId = m.Id, Availability = m.GetAvailability(), WatchedDate = null, Title = m.Name, Cast = m.GetCast(), Key = new MovieKey{NetflixId = m.Id}, Summary = m.Synopsis, RunTime = m.GetRunTimeInMinutes(), RelatedImages = m.GetRelatedImages(), Reviews = m.GetReviews(), Rating = m.GetRating(), MPAARating = m.Rating, Source = "Netflix" }).ToList(); return movies; }
private List<Movie> GetMovies(Member member) { var helper = new SearchHelper(); var movies = new List<Movie>(); var memberMovies = member.Movies; foreach (var movie in memberMovies) { var criteria = new MovieSearchCriteria {Key = movie.Key}; var movieDetail = helper.Search(criteria).FirstOrDefault(); if (movieDetail!=null) { //make sure we set the key to the one we already have....otherwise a new one will get created. movieDetail.Key = movie.Key; movies.Add(movieDetail); } } return movies; }