public async Task <IEnumerable <DiscoverMovies.ResponseModel> > AllMovies(int year) { TMDbCoreConfiguration.DiscoverMoviesSearchOptions options = new TMDbCoreConfiguration.DiscoverMoviesSearchOptions() { PageNumber = 1, Year = year }; return(await CallDiscoverMoviesTmdbApi(options)); }
public async Task <IEnumerable <DiscoverMovies.ResponseModel> > AllMovies(DateTime startDate, DateTime endDate) { TMDbCoreConfiguration.DiscoverMoviesSearchOptions options = new TMDbCoreConfiguration.DiscoverMoviesSearchOptions() { PageNumber = 1, StartDate = startDate, EndDate = endDate }; return(await CallDiscoverMoviesTmdbApi(options)); }
private async Task <IEnumerable <DiscoverMovies.ResponseModel> > CallDiscoverMoviesTmdbApi(TMDbCoreConfiguration.DiscoverMoviesSearchOptions options) { var result = new List <DiscoverMovies.ResponseModel>(); int totalPageCount = 1; options.PageNumber = 1; while (options.PageNumber <= totalPageCount) { await Task.Delay(251); // added delay in order to not violate the TMDb limit of 40 requests / 10 seconds (4 requests per 1 second == 1 request per 250 milliseconds) try { using (var client = new HttpClient()) { client.BaseAddress = new Uri(TMDbCoreConfiguration.TmdbBaseUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync(options.DiscoverMoviesTmdbUrl); if (response.IsSuccessStatusCode) { string jsonResponse = response.Content.ReadAsStringAsync().Result; if (!string.IsNullOrWhiteSpace(jsonResponse)) { try { var discoverMoviesResponse = JToken.Parse(jsonResponse).ToObject <DiscoverMovies.ResponseModel>(); result.Add(discoverMoviesResponse); totalPageCount = discoverMoviesResponse.total_pages; } catch (JsonSerializationException jsex) { Debug.WriteLine(jsex.ToString()); } } } else { Debug.WriteLine(response.ReasonPhrase); } } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } options.PageNumber++; } return(result); }