You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.TrashGuide/QualitySize/QualitySizeGuideService.cs

38 lines
1.3 KiB

using Recyclarr.Repo;
namespace Recyclarr.TrashGuide.QualitySize;
public class QualitySizeGuideService(
IRepoMetadataBuilder metadataBuilder,
QualitySizeGuideParser parser)
: IQualitySizeGuideService
{
private readonly Dictionary<SupportedServices, IReadOnlyList<QualitySizeData>> _cache = new();
private QualitySizePaths CreatePaths(SupportedServices serviceType)
{
var metadata = metadataBuilder.GetMetadata();
return serviceType switch
{
SupportedServices.Radarr => new QualitySizePaths(
metadataBuilder.ToDirectoryInfoList(metadata.JsonPaths.Radarr.Qualities)
),
SupportedServices.Sonarr => new QualitySizePaths(
metadataBuilder.ToDirectoryInfoList(metadata.JsonPaths.Sonarr.Qualities)
),
_ => throw new ArgumentOutOfRangeException(nameof(serviceType), serviceType, null)
};
}
public IReadOnlyList<QualitySizeData> GetQualitySizeData(SupportedServices serviceType)
{
if (_cache.TryGetValue(serviceType, out var cfData))
{
return cfData;
}
var paths = CreatePaths(serviceType);
return _cache[serviceType] = parser.GetQualities(paths.QualitySizeDirectories);
}
}