mirror of
https://github.com/Cleanuparr/Cleanuparr.git
synced 2026-10-28 10:48:49 -04:00
52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
using Cleanuparr.Domain.Entities.Arr.Queue;
|
|
using Cleanuparr.Infrastructure.Features.Arr.Interfaces;
|
|
using Cleanuparr.Persistence.Models.Configuration.Arr;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace Cleanuparr.Infrastructure.Features.Arr;
|
|
|
|
public sealed class ArrQueueReader : IArrQueueReader
|
|
{
|
|
private readonly ILogger<ArrQueueReader> _logger;
|
|
|
|
public ArrQueueReader(ILogger<ArrQueueReader> logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
public async Task<List<QueueRecord>> ReadAllAsync(IArrClient arrClient, ArrInstance arrInstance)
|
|
{
|
|
const ushort maxPage = 100;
|
|
ushort page = 1;
|
|
int totalRecords = 0;
|
|
List<QueueRecord> records = [];
|
|
|
|
do
|
|
{
|
|
QueueListResponse queueResponse = await arrClient.GetQueueItemsAsync(arrInstance, page);
|
|
|
|
if (totalRecords is 0)
|
|
{
|
|
totalRecords = queueResponse.TotalRecords;
|
|
|
|
_logger.LogDebug("{Items} items found in queue | {Url}", queueResponse.TotalRecords, arrInstance.Url);
|
|
}
|
|
|
|
if (queueResponse.Records.Count is 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
records.AddRange(queueResponse.Records);
|
|
|
|
if (records.Count >= totalRecords)
|
|
{
|
|
break;
|
|
}
|
|
|
|
page++;
|
|
} while (records.Count < totalRecords && page < maxPage);
|
|
|
|
return records;
|
|
}
|
|
} |