using System.Linq; using System.Collections.Generic; using NzbDrone.Core.Indexers; namespace NzbDrone.Core.Download { public interface IProvideDownloadClient { IDownloadClient GetDownloadClient(DownloadProtocol downloadProtocol); IEnumerable GetDownloadClients(); IDownloadClient Get(int id); } public class DownloadClientProvider : IProvideDownloadClient { private readonly IDownloadClientFactory _downloadClientFactory; public DownloadClientProvider(IDownloadClientFactory downloadClientFactory) { _downloadClientFactory = downloadClientFactory; } public IDownloadClient GetDownloadClient(DownloadProtocol downloadProtocol) { return _downloadClientFactory.GetAvailableProviders().FirstOrDefault(v => v.Protocol == downloadProtocol); } public IEnumerable GetDownloadClients() { return _downloadClientFactory.GetAvailableProviders();//.Select(MapDownloadClient); } public IDownloadClient Get(int id) { return _downloadClientFactory.GetAvailableProviders().Single(d => d.Definition.Id == id); } public IDownloadClient MapDownloadClient(IDownloadClient downloadClient) { _downloadClientFactory.SetProviderCharacteristics(downloadClient, (DownloadClientDefinition)downloadClient.Definition); return downloadClient; } } }