Sonarr/src/NzbDrone.Core/ImportLists/Trakt/Popular/TraktPopularRequestGenerato...

84 lines
3.1 KiB
C#

using System.Collections.Generic;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
namespace NzbDrone.Core.ImportLists.Trakt.Popular
{
public class TraktPopularRequestGenerator : IImportListRequestGenerator
{
public TraktPopularSettings Settings { get; set; }
public string ClientId { get; set; }
public TraktPopularRequestGenerator()
{
}
public virtual ImportListPageableRequestChain GetListItems()
{
var pageableRequests = new ImportListPageableRequestChain();
pageableRequests.Add(GetSeriesRequest());
return pageableRequests;
}
private IEnumerable<ImportListRequest> GetSeriesRequest()
{
var link = Settings.BaseUrl.Trim();
switch (Settings.TraktListType)
{
case (int)TraktPopularListType.Trending:
link += "/shows/trending";
break;
case (int)TraktPopularListType.Popular:
link += "/shows/popular";
break;
case (int)TraktPopularListType.Anticipated:
link += "/shows/anticipated";
break;
case (int)TraktPopularListType.TopWatchedByWeek:
link += "/shows/watched/weekly";
break;
case (int)TraktPopularListType.TopWatchedByMonth:
link += "/shows/watched/monthly";
break;
case (int)TraktPopularListType.TopWatchedByYear:
link += "/shows/watched/yearly";
break;
case (int)TraktPopularListType.TopWatchedByAllTime:
link += "/shows/watched/all";
break;
case (int)TraktPopularListType.RecommendedByWeek:
link += "/shows/recommended/weekly";
break;
case (int)TraktPopularListType.RecommendedByMonth:
link += "/shows/recommended/monthly";
break;
case (int)TraktPopularListType.RecommendedByYear:
link += "/shows/recommended/yearly";
break;
case (int)TraktPopularListType.RecommendedByAllTime:
link += "/shows/recommended/yearly";
break;
}
var filtersAndLimit = $"?years={Settings.Years}&genres={Settings.Genres.ToLower()}&ratings={Settings.Rating}&limit={Settings.Limit}{Settings.TraktAdditionalParameters}";
link += filtersAndLimit;
var request = new ImportListRequest($"{link}", HttpAccept.Json);
request.HttpRequest.Headers.Add("trakt-api-version", "2");
request.HttpRequest.Headers.Add("trakt-api-key", ClientId);
if (Settings.AccessToken.IsNotNullOrWhiteSpace())
{
request.HttpRequest.Headers.Add("Authorization", "Bearer " + Settings.AccessToken);
}
yield return request;
}
}
}