private static Movie Movie(UpcomingMovieResponse upcomingMovieResponse, GenreRootResponse genreRootResponse)
 {
     return(new Movie {
         BackdropUrl = baseImageUrl + upcomingMovieResponse.BackdropPath,
         Name = upcomingMovieResponse.Title,
         Genre = FormatGenres(genreRootResponse, upcomingMovieResponse),
         Overview = upcomingMovieResponse.Overview,
         ReleaseDate = upcomingMovieResponse.ReleaseDate,
         PosterUrl = baseImageUrl + upcomingMovieResponse.PosterPath,
     });
 }
        private static string FormatGenres(GenreRootResponse genreRootResponse, UpcomingMovieResponse upcomingMovieResponse)
        {
            var listOfGenres = new List <string>();

            if (genreRootResponse != null && genreRootResponse.Genres.Count > 0)
            {
                foreach (var genreId in upcomingMovieResponse.GenreIds)
                {
                    var genre = genreRootResponse.Genres.FirstOrDefault(x => x.Id == genreId);

                    if (genre != null)
                    {
                        listOfGenres.Add(genre.Name);
                    }
                }
            }

            return(string.Join(", ", listOfGenres));
        }
Esempio n. 3
0
        //TODO: Need receive the region as a parameter, so that the user can choose the region to filter the results
        public async Task <UpcomingMovie> GetUpcomingMoviesAsync(int page)
        {
            try {
                string upcomingMoviesPath = "movie/upcoming";

                using (var client = new HttpClient()) {
                    var startPath = Path.Combine(apiUrl, upcomingMoviesPath);
                    var result    = await client.GetAsync($"{startPath}?api_key={apiKey}&language=en-US&page={page}");

                    if (!result.IsSuccessStatusCode)
                    {
                        return(new UpcomingMovie {
                            Succeeded = false,
                            ErrorMessage = result.ReasonPhrase,
                        });
                    }

                    if (genreRootResponse == null)
                    {
                        genreRootResponse = await FillGenres();

                        if (!genreRootResponse.Succeeded)
                        {
                            return(new UpcomingMovie {
                                Succeeded = false,
                                ErrorMessage = string.IsNullOrEmpty(genreRootResponse.ErrorMessage) ? "" : genreRootResponse.ErrorMessage,
                            });
                        }
                    }

                    var resultString = await result.Content.ReadAsStringAsync();

                    var upcomingMoviesRoot = JsonConvert.DeserializeObject <UpcomingMoviesRootResponse>(resultString);
                    return(ConverterReponseToModel.UpcomingMovie(upcomingMoviesRoot, genreRootResponse));
                }
            }
            catch (Exception ex) {
                return(new UpcomingMovie {
                    Succeeded = false,
                    ErrorMessage = ex.Message,
                });
            }
        }
 public static UpcomingMovie UpcomingMovie(UpcomingMoviesRootResponse upcomingMoviesRootResponse, GenreRootResponse genreRootResponse)
 {
     return(new UpcomingMovie {
         Page = upcomingMoviesRootResponse.Page,
         TotalPages = upcomingMoviesRootResponse.TotalPages,
         Movies = upcomingMoviesRootResponse.Results.Select(x => Movie(x, genreRootResponse)).ToList(),
         Succeeded = true,
         ErrorMessage = string.Empty,
     });
 }