Radarr/src/NzbDrone.Core/ImportLists/TMDb/User/TMDbUserRequestGenerator.cs

72 lines
2.6 KiB
C#
Raw Normal View History

2021-11-22 21:14:04 +00:00
using System.Collections.Generic;
using System.Net.Http;
2021-03-15 18:21:42 +00:00
using Newtonsoft.Json;
2019-12-15 07:34:27 +00:00
using NLog;
using NzbDrone.Common.Http;
namespace NzbDrone.Core.ImportLists.TMDb.User
2019-12-15 07:34:27 +00:00
{
public class TMDbUserRequestGenerator : IImportListRequestGenerator
2019-12-15 07:34:27 +00:00
{
public TMDbUserSettings Settings { get; set; }
public IHttpClient HttpClient { get; set; }
public IHttpRequestBuilderFactory RequestBuilder { get; set; }
public Logger Logger { get; set; }
public int MaxPages { get; set; }
public virtual ImportListPageableRequestChain GetMovies()
2019-12-15 07:34:27 +00:00
{
var pageableRequests = new ImportListPageableRequestChain();
2019-12-15 07:34:27 +00:00
pageableRequests.Add(GetMoviesRequests());
return pageableRequests;
}
private IEnumerable<ImportListRequest> GetMoviesRequests()
2019-12-15 07:34:27 +00:00
{
var requestBuilder = RequestBuilder.Create()
.SetHeader("Authorization", $"Bearer {Settings.AccessToken}")
.SetSegment("api", "4")
.SetSegment("route", "account")
.SetSegment("id", Settings.AccountId);
switch (Settings.ListType)
{
case (int)TMDbUserListType.Watchlist:
requestBuilder.SetSegment("secondaryRoute", "/movie/watchlist");
break;
case (int)TMDbUserListType.Recommendations:
requestBuilder.SetSegment("secondaryRoute", "/movie/recommendations");
break;
case (int)TMDbUserListType.Rated:
requestBuilder.SetSegment("secondaryRoute", "/movie/rated");
break;
case (int)TMDbUserListType.Favorite:
requestBuilder.SetSegment("secondaryRoute", "/movie/favorites");
break;
}
requestBuilder.Accept(HttpAccept.Json);
2021-11-22 21:14:04 +00:00
requestBuilder.Method = HttpMethod.Get;
2019-12-15 07:34:27 +00:00
2021-03-15 18:21:42 +00:00
var jsonResponse = JsonConvert.DeserializeObject<MovieSearchResource>(HttpClient.Execute(requestBuilder.Build()).Content);
MaxPages = jsonResponse.TotalPages;
for (var pageNumber = 1; pageNumber <= MaxPages; pageNumber++)
{
requestBuilder.AddQueryParam("page", pageNumber, true);
var request = requestBuilder.Build();
Logger.Debug($"Importing TMDb movies from: {request.Url}");
yield return new ImportListRequest(request);
}
2019-12-15 07:34:27 +00:00
}
}
}