From 49501a55ae677a2c6d4ca009f8c1b0a54cbb590c Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 12 Nov 2023 01:41:39 +0200 Subject: [PATCH] Check paged requests using PageSize for Import Lists --- .../ImportLists/HttpImportListBase.cs | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/ImportLists/HttpImportListBase.cs b/src/NzbDrone.Core/ImportLists/HttpImportListBase.cs index 0aa9fcf28..9c96a4dff 100644 --- a/src/NzbDrone.Core/ImportLists/HttpImportListBase.cs +++ b/src/NzbDrone.Core/ImportLists/HttpImportListBase.cs @@ -20,12 +20,14 @@ namespace NzbDrone.Core.ImportLists public abstract class HttpImportListBase : ImportListBase where TSettings : IProviderConfig, new() { + protected const int MaxNumResultsPerQuery = 1000; + protected readonly IHttpClient _httpClient; public override bool Enabled => true; - public bool SupportsPaging => PageSize > 20; + public override bool EnableAuto => false; - public virtual int PageSize => 20; + public virtual int PageSize => 0; public virtual TimeSpan RateLimit => TimeSpan.FromSeconds(2); public abstract IImportListRequestGenerator GetRequestGenerator(); @@ -71,6 +73,16 @@ namespace NzbDrone.Core.ImportLists var page = FetchPage(request, parser); pagedMovies.AddRange(page); + + if (pagedMovies.Count >= MaxNumResultsPerQuery) + { + break; + } + + if (!IsFullPage(page)) + { + break; + } } movies.AddRange(pagedMovies.Where(IsValidItem)); @@ -161,6 +173,11 @@ namespace NzbDrone.Core.ImportLists return true; } + protected virtual bool IsFullPage(IList page) + { + return PageSize != 0 && page.Count >= PageSize; + } + protected virtual IList FetchPage(ImportListRequest request, IParseImportListResponse parser) { var response = FetchImportListResponse(request);