Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }