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)); }
//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, }); }