Ejemplo n.º 1
0
        public async Task <SearchMovie> GetMoviesByCategoryAsync(int page, Enums.MovieCategory category)
        {
            var restUrl = $"{baseUrl}{Enums.PathCategoryMovie(category)}?api_key={apiKey}&page={page}&language={language}";

            try
            {
                using (var response = await httpClient.GetAsync(restUrl).ConfigureAwait(false))
                {
                    if (response.IsSuccessStatusCode)
                    {
                        using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
                        {
                            return(JsonConvert.DeserializeObject <SearchMovie>(
                                       await new StreamReader(responseStream).ReadToEndAsync().ConfigureAwait(false)));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ReportError(ex);
            }

            return(null);
        }
        private async Task LoadMoviesAsync(int page, Enums.MovieCategory movieCategory)
        {
            try
            {
                // Added to configure "ConfigureAwait(true)" on Windows
                var continueOnCapturedContext = Device.RuntimePlatform == Device.Windows;

                genres = genres ?? await ApiService.GetGenresAsync().ConfigureAwait(continueOnCapturedContext);

                var searchMovie = await ApiService.GetMoviesByCategoryAsync(page, movieCategory).ConfigureAwait(continueOnCapturedContext);

                if (searchMovie != null)
                {
                    var movies = new List <Movie>();
                    totalPage = searchMovie.TotalPages;
                    foreach (var movie in searchMovie.Movies)
                    {
                        GenreListToString(movie);
                        movies.Add(movie);
                    }
                    Movies.AddRange(movies);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
Ejemplo n.º 3
0
        private async Task LoadMoviesAsync(int page, Enums.MovieCategory movieCategory)
        {
            try
            {
                genres = genres ?? await ApiService.GetGenresAsync().ConfigureAwait(false);

                var searchMovies = await ApiService.GetMoviesByCategoryAsync(page, movieCategory).ConfigureAwait(false);

                if (searchMovies != null)
                {
                    var movies = new List <Movie>();
                    totalPage = searchMovies.TotalPages;
                    foreach (var movie in searchMovies.Movies)
                    {
                        if (movie.GenreIds != null)
                        {
                            movie.Genres =
                                movie.Genres ??
                                genres.Where(genre => movie.GenreIds.Any(genreId => genreId == genre.Id)).ToArray();
                        }

                        movies.Add(movie);
                    }
                    Movies.AddRange(movies);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
        public Task <SearchMovie> GetMoviesByCategoryAsync(int page, Enums.MovieCategory category)
        {
            var searchMovie  = new SearchMovie();
            var moviesSearch = movies.Where(m => m.Title.ToLower().Contains(Enums.NameCategoryMovie(category).ToLower())).ToList();

            var countSkip = numberMoviesByPage * (page - 1);

            searchMovie.Movies = moviesSearch.Skip(countSkip).Take(numberMoviesByPage).ToList();

            searchMovie.TotalResults = moviesSearch.Count();
            searchMovie.TotalPages   = moviesSearch.Count() / numberMoviesByPage;

            return(Task.FromResult(searchMovie));
        }