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.
Prowlarr/src/NzbDrone.Core/Indexers/IndexerStatusService.cs

70 lines
2.4 KiB

using System;
using System.Collections.Generic;
using NLog;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.ThingiProvider.Status;
namespace NzbDrone.Core.Indexers
{
public interface IIndexerStatusService : IProviderStatusServiceBase<IndexerStatus>
{
ReleaseInfo GetLastRssSyncReleaseInfo(int indexerId);
IDictionary<string, string> GetIndexerCookies(int indexerId);
DateTime GetIndexerCookiesExpirationDate(int indexerId);
void UpdateRssSyncStatus(int indexerId, ReleaseInfo releaseInfo);
void UpdateCookies(int indexerId, IDictionary<string, string> cookies, DateTime? expiration);
}
public class IndexerStatusService : ProviderStatusServiceBase<IIndexer, IndexerStatus>, IIndexerStatusService
{
public IndexerStatusService(IIndexerStatusRepository providerStatusRepository, IEventAggregator eventAggregator, IRuntimeInfo runtimeInfo, Logger logger)
: base(providerStatusRepository, eventAggregator, runtimeInfo, logger)
{
}
public ReleaseInfo GetLastRssSyncReleaseInfo(int indexerId)
{
return GetProviderStatus(indexerId).LastRssSyncReleaseInfo;
}
public IDictionary<string, string> GetIndexerCookies(int indexerId)
{
return GetProviderStatus(indexerId)?.Cookies ?? null;
}
public DateTime GetIndexerCookiesExpirationDate(int indexerId)
{
return GetProviderStatus(indexerId)?.CookiesExpirationDate ?? DateTime.Now.AddDays(12);
}
public void UpdateRssSyncStatus(int indexerId, ReleaseInfo releaseInfo)
{
lock (_syncRoot)
{
var status = GetProviderStatus(indexerId);
status.LastRssSyncReleaseInfo = releaseInfo;
_providerStatusRepository.Upsert(status);
}
}
public void UpdateCookies(int indexerId, IDictionary<string, string> cookies, DateTime? expiration)
{
if (indexerId > 0)
{
lock (_syncRoot)
{
var status = GetProviderStatus(indexerId);
status.Cookies = cookies;
status.CookiesExpirationDate = expiration;
_providerStatusRepository.Upsert(status);
}
}
}
}
}