Exemplo n.º 1
0
        public async Task <IEnumerable <DiscoverMovies.ResponseModel> > AllMovies(int year)
        {
            TMDbCoreConfiguration.DiscoverMoviesSearchOptions options = new TMDbCoreConfiguration.DiscoverMoviesSearchOptions()
            {
                PageNumber = 1,
                Year       = year
            };

            return(await CallDiscoverMoviesTmdbApi(options));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }