public async Task <IEnumerable <MovieDbMovie> > SearchMovieAsync(string title) { MovieDbGenres genres = await GetGenres(); List <MovieDbMovie> movies = new List <MovieDbMovie>(); if (string.IsNullOrEmpty(title)) { return(movies); } LogManager.GetCurrentClassLogger().Info($"Searching MovieDb for '{title}'..."); try { var client = new RestClient("https://api.themoviedb.org/3/search/movie"); var request = new RestRequest(Method.GET); request.AddParameter("api_key", Settings.MovieDb_ApiKey); request.AddParameter("language", Settings.MovieDb_Language); request.AddParameter("query", title); request.AddParameter("page", "1"); IRestResponse <MovieDbResponse> response = await client.ExecuteAsync <MovieDbResponse>(request); MovieDbResponse movieDbResponse = response.Data; if (movieDbResponse.results.Count < 1) { return(movies); } foreach (MovieDbResult result in movieDbResponse.results) { movies.Add(BuildMovieDto(result, genres)); } } catch (Exception ex) { LogManager.GetCurrentClassLogger().Error(ex); } LogManager.GetCurrentClassLogger().Info($"Finished searching MovieDb for '{title}'."); return(movies.OrderByDescending(m => m.ReleaseDate)); }
private MovieDbMovie BuildMovieDto(MovieDbResult movieDbResult, MovieDbGenres movieDbGenres) { MovieDbMovie movieDto = new MovieDbMovie() { ProviderMovieId = movieDbResult.id, Overview = movieDbResult.overview, Title = movieDbResult.title, ReleaseDate = movieDbResult.release_date, CoverUri = movieDbResult.poster_path }; foreach (string genreId in movieDbResult.genre_ids) { var genre = movieDbGenres.genres.Where(g => g.id == genreId).FirstOrDefault(); if (genre != null) { movieDto.Genres.Add(genre.name); } } return(movieDto); }