TraktShowsTrending GetTrendingShows(int page)
{
TraktShowsTrending trendingShows = null;
if (TrendingShowPages == null || LastRequest < DateTime.UtcNow.Subtract(new TimeSpan(0, TraktSettings.WebRequestCacheMinutes, 0)))
{
// get the first page
trendingShows = TraktAPI.TraktAPI.GetTrendingShows(1, TraktSettings.MaxTrendingShowsRequest);
// reset to defaults
LastRequest = DateTime.UtcNow;
CurrentPage = 1;
PreviousSelectedIndex = 0;
// clear the cache
if (TrendingShowPages == null)
TrendingShowPages = new Dictionary<int, TraktShowsTrending>();
else
TrendingShowPages.Clear();
// add page to cache
TrendingShowPages.Add(1, trendingShows);
}
else
{
// get page from cache if it exists
if (TrendingShowPages.TryGetValue(page, out trendingShows))
{
return trendingShows;
}
// request next page
trendingShows = TraktAPI.TraktAPI.GetTrendingShows(page, TraktSettings.MaxTrendingShowsRequest);
if (trendingShows != null && trendingShows.Shows != null)
{
// add to cache
TrendingShowPages.Add(page, trendingShows);
}
}
return trendingShows;
}