mirror of https://github.com/Radarr/Radarr
updates and compile-able
This commit is contained in:
parent
47824426c6
commit
ec1c81e3ed
|
@ -1,35 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using FluentValidation.Results;
|
|
||||||
using NzbDrone.Core.ThingiProvider;
|
|
||||||
using NzbDrone.Core.Tv;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImport
|
|
||||||
{
|
|
||||||
public abstract class AutoImportBase<TSettings> : IAutoImport where TSettings : IProviderConfig, new()
|
|
||||||
{
|
|
||||||
public abstract string Name { get; }
|
|
||||||
|
|
||||||
public Type ConfigContract => typeof(TSettings);
|
|
||||||
|
|
||||||
public virtual ProviderMessage Message => null;
|
|
||||||
|
|
||||||
public IEnumerable<ProviderDefinition> DefaultDefinitions => new List<ProviderDefinition>();
|
|
||||||
|
|
||||||
public ProviderDefinition Definition { get; set; }
|
|
||||||
public abstract ValidationResult Test();
|
|
||||||
|
|
||||||
public abstract string Link { get; }
|
|
||||||
|
|
||||||
protected TSettings Settings => (TSettings)Definition.Settings;
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return GetType().Name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract bool Enabled { get; }
|
|
||||||
|
|
||||||
public virtual object RequestAction(string action, IDictionary<string, string> query) { return null; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using NzbDrone.Core.ThingiProvider;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImport
|
|
||||||
{
|
|
||||||
public class AutoImportDefinition : ProviderDefinition
|
|
||||||
{
|
|
||||||
public AutoImportDefinition()
|
|
||||||
{
|
|
||||||
Tags = new HashSet<int>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Enabled { get; set; }
|
|
||||||
public HashSet<int> Tags { get; set; }
|
|
||||||
|
|
||||||
public override bool Enable => Enabled;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
using NzbDrone.Core.Datastore;
|
|
||||||
using NzbDrone.Core.Messaging.Events;
|
|
||||||
using NzbDrone.Core.ThingiProvider;
|
|
||||||
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImport
|
|
||||||
{
|
|
||||||
public interface IAutoImportRepository : IProviderRepository<AutoImportDefinition>
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AutoImportRepository : ProviderRepository<AutoImportDefinition>, IAutoImportRepository
|
|
||||||
{
|
|
||||||
public AutoImportRepository(IMainDatabase database, IEventAggregator eventAggregator)
|
|
||||||
: base(database, eventAggregator)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
using NzbDrone.Core.ThingiProvider;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImport
|
|
||||||
{
|
|
||||||
public interface IAutoImport : IProvider
|
|
||||||
{
|
|
||||||
string Link { get; }
|
|
||||||
bool Enabled { get; }
|
|
||||||
|
|
||||||
// void OnGrab(GrabMessage grabMessage);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using FluentValidation.Results;
|
|
||||||
using NzbDrone.Common.Extensions;
|
|
||||||
using NzbDrone.Core.Tv;
|
|
||||||
using NzbDrone.Core.AutoImport;
|
|
||||||
using NzbDrone.Core.AutoImport.IMDbWatchList;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImpoter.IMDbWatchList
|
|
||||||
{
|
|
||||||
public class IMDbWatchList : AutoImportBase<IMDbWatchListSettings>
|
|
||||||
{
|
|
||||||
public override bool Enabled
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//private readonly INotifyMyAndroidProxy _proxy;
|
|
||||||
|
|
||||||
//public NotifyMyAndroid(INotifyMyAndroidProxy proxy)
|
|
||||||
//{
|
|
||||||
// _proxy = proxy;
|
|
||||||
//}
|
|
||||||
|
|
||||||
public override string Link => "http://rss.imdb.com/";
|
|
||||||
|
|
||||||
public override string Name => "IMDb Public Watchlist";
|
|
||||||
|
|
||||||
|
|
||||||
public override ValidationResult Test()
|
|
||||||
{
|
|
||||||
var failures = new List<ValidationFailure>();
|
|
||||||
|
|
||||||
// failures.AddIfNotNull(_proxy.Test(Settings));
|
|
||||||
|
|
||||||
return new ValidationResult(failures);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
using FluentMigrator;
|
||||||
|
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Datastore.Migration
|
||||||
|
{
|
||||||
|
[Migration(119)]
|
||||||
|
public class create_netimport_table : NzbDroneMigrationBase
|
||||||
|
{
|
||||||
|
protected override void MainDbUpgrade()
|
||||||
|
{
|
||||||
|
Create.TableForModel("NetImport")
|
||||||
|
.WithColumn("Enabled").AsBoolean()
|
||||||
|
.WithColumn("Name").AsString().Unique()
|
||||||
|
.WithColumn("Implementation").AsString()
|
||||||
|
.WithColumn("Settings").AsString().Nullable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
using NzbDrone.Common.Exceptions;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport.Exceptions
|
||||||
|
{
|
||||||
|
public class NetImportException : NzbDroneException
|
||||||
|
{
|
||||||
|
private readonly NetImportResponse _netImportResponse;
|
||||||
|
|
||||||
|
public NetImportException(NetImportResponse response, string message, params object[] args)
|
||||||
|
: base(message, args)
|
||||||
|
{
|
||||||
|
_netImportResponse = response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetImportException(NetImportResponse response, string message)
|
||||||
|
: base(message)
|
||||||
|
{
|
||||||
|
_netImportResponse = response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetImportResponse Response => _netImportResponse;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using FluentValidation.Results;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Common.Extensions;
|
||||||
|
using NzbDrone.Common.Http;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
using NzbDrone.Core.Http.CloudFlare;
|
||||||
|
using NzbDrone.Core.Indexers.Exceptions;
|
||||||
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
using NzbDrone.Core.Parser;
|
||||||
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
using NzbDrone.Core.ThingiProvider;
|
||||||
|
using NzbDrone.Core.Tv;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public abstract class HttpNetImportBase<TSettings> : NetImportBase<TSettings>
|
||||||
|
where TSettings : IProviderConfig, new()
|
||||||
|
{
|
||||||
|
protected const int MaxNumResultsPerQuery = 1000;
|
||||||
|
|
||||||
|
protected readonly IHttpClient _httpClient;
|
||||||
|
|
||||||
|
public override bool Enabled => true;
|
||||||
|
|
||||||
|
public virtual TimeSpan RateLimit => TimeSpan.FromSeconds(2);
|
||||||
|
|
||||||
|
public abstract INetImportRequestGenerator GetRequestGenerator();
|
||||||
|
public abstract IParseNetImportResponse GetParser();
|
||||||
|
|
||||||
|
public HttpNetImportBase(IHttpClient httpClient, IConfigService configService, IParsingService parsingService, Logger logger)
|
||||||
|
: base(configService, parsingService, logger)
|
||||||
|
{
|
||||||
|
_httpClient = httpClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IList<Movie> Fetch()
|
||||||
|
{
|
||||||
|
return new List<Movie>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Test(List<ValidationFailure> failures)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual ValidationFailure TestConnection()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using FluentValidation.Results;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Common.Http;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
using NzbDrone.Core.Indexers;
|
||||||
|
using NzbDrone.Core.Indexers.PassThePopcorn;
|
||||||
|
using NzbDrone.Core.Parser;
|
||||||
|
using NzbDrone.Core.Tv;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport.IMDbWatchList
|
||||||
|
{
|
||||||
|
public class IMDbWatchList : HttpNetImportBase<IMDbWatchListSettings>
|
||||||
|
{
|
||||||
|
public override string Name => "IMDbWatchList";
|
||||||
|
public override string Link => "http://rss.imdb.com/list/";
|
||||||
|
public override bool Enabled => true;
|
||||||
|
|
||||||
|
|
||||||
|
public IMDbWatchList(IHttpClient httpClient, IConfigService configService, IParsingService parsingService, Logger logger)
|
||||||
|
: base(httpClient, configService, parsingService, logger)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
public override INetImportRequestGenerator GetRequestGenerator()
|
||||||
|
{
|
||||||
|
return new IMDbWatchListRequestGenerator() { Settings = Settings };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IParseNetImportResponse GetParser()
|
||||||
|
{
|
||||||
|
return new IMDbWatchListParser(Settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport.IMDbWatchList
|
||||||
|
{
|
||||||
|
class IMDbWatchListAPI
|
||||||
|
{
|
||||||
|
[XmlRoot(ElementName = "item")]
|
||||||
|
public class Movie
|
||||||
|
{
|
||||||
|
[XmlElement(ElementName = "pubDate")]
|
||||||
|
public string PublishDate { get; set; }
|
||||||
|
[XmlElement(ElementName = "title")]
|
||||||
|
public string Title { get; set; }
|
||||||
|
[XmlElement(ElementName = "link")]
|
||||||
|
public string Link { get; set; }
|
||||||
|
[XmlElement(ElementName = "guid")]
|
||||||
|
public string Guid { get; set; }
|
||||||
|
[XmlElement(ElementName = "description")]
|
||||||
|
public string Description { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[XmlRoot(ElementName = "channel")]
|
||||||
|
public class Channel
|
||||||
|
{
|
||||||
|
[XmlElement(ElementName = "title")]
|
||||||
|
public string Title { get; set; }
|
||||||
|
[XmlElement(ElementName = "link")]
|
||||||
|
public string Link { get; set; }
|
||||||
|
[XmlElement(ElementName = "description")]
|
||||||
|
public string Description { get; set; }
|
||||||
|
[XmlElement(ElementName = "pubDate")]
|
||||||
|
public string PublishDate { get; set; }
|
||||||
|
[XmlElement(ElementName = "lastBuildDate")]
|
||||||
|
public string LastBuildDate { get; set; }
|
||||||
|
[XmlElement(ElementName = "item")]
|
||||||
|
public List<Movie> Movie { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using NzbDrone.Core.NetImport.Exceptions;
|
||||||
|
using NzbDrone.Core.Tv;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport.IMDbWatchList
|
||||||
|
{
|
||||||
|
public class IMDbWatchListParser : IParseNetImportResponse
|
||||||
|
{
|
||||||
|
private readonly IMDbWatchListSettings _settings;
|
||||||
|
|
||||||
|
public IMDbWatchListParser(IMDbWatchListSettings settings)
|
||||||
|
{
|
||||||
|
_settings = settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IList<Movie> ParseResponse(NetImportResponse netImportResponse)
|
||||||
|
{
|
||||||
|
var torrentInfos = new List<Movie>();
|
||||||
|
|
||||||
|
if (netImportResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
||||||
|
{
|
||||||
|
throw new NetImportException(netImportResponse,
|
||||||
|
"Unexpected response status {0} code from API request",
|
||||||
|
netImportResponse.HttpResponse.StatusCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
var jsonResponse = JsonConvert.DeserializeObject<IMDbWatchListAPI.Channel>(netImportResponse.Content);
|
||||||
|
|
||||||
|
var responseData = jsonResponse.Movie;
|
||||||
|
if (responseData == null)
|
||||||
|
{
|
||||||
|
throw new NetImportException(netImportResponse,
|
||||||
|
"This list has no movies");
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var result in responseData)
|
||||||
|
{
|
||||||
|
torrentInfos.Add(new Movie()
|
||||||
|
{
|
||||||
|
Title = Parser.Parser.ParseMovieTitle(result.Title, false).MovieTitle,
|
||||||
|
Year = Parser.Parser.ParseMovieTitle(result.Title, false).Year,
|
||||||
|
ImdbId = Parser.Parser.ParseImdbId(result.Link).ToString()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return torrentInfos.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ using NzbDrone.Core.Exceptions;
|
||||||
using RestSharp;
|
using RestSharp;
|
||||||
using NzbDrone.Core.Rest;
|
using NzbDrone.Core.Rest;
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImport.IMDbWatchList
|
namespace NzbDrone.Core.NetImport.IMDbWatchList
|
||||||
{
|
{
|
||||||
public interface IIMDbWatchListProxy
|
public interface IIMDbWatchListProxy
|
||||||
{
|
{
|
||||||
|
@ -64,8 +64,8 @@ namespace NzbDrone.Core.AutoImport.IMDbWatchList
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Verify(settings.IMDbWatchListId);
|
Verify(settings.Link);
|
||||||
ImportMovies(settings.IMDbWatchListId);
|
ImportMovies(settings.Link);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
|
@ -0,0 +1,34 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using NzbDrone.Common.Http;
|
||||||
|
using NzbDrone.Common.Serializer;
|
||||||
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport.IMDbWatchList
|
||||||
|
{
|
||||||
|
public class IMDbWatchListRequestGenerator : INetImportRequestGenerator
|
||||||
|
{
|
||||||
|
public IMDbWatchListSettings Settings { get; set; }
|
||||||
|
|
||||||
|
public virtual NetImportPageableRequestChain GetMovies()
|
||||||
|
{
|
||||||
|
var pageableRequests = new NetImportPageableRequestChain();
|
||||||
|
|
||||||
|
pageableRequests.Add(GetMovies(null));
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetImportPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
return new NetImportPageableRequestChain();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<NetImportRequest> GetMovies(string searchParameters)
|
||||||
|
{
|
||||||
|
var request = new NetImportRequest($"{Settings.Link.Trim()}", HttpAccept.Rss);
|
||||||
|
yield return request;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,13 +3,13 @@ using NzbDrone.Core.Annotations;
|
||||||
using NzbDrone.Core.ThingiProvider;
|
using NzbDrone.Core.ThingiProvider;
|
||||||
using NzbDrone.Core.Validation;
|
using NzbDrone.Core.Validation;
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImport.IMDbWatchList
|
namespace NzbDrone.Core.NetImport.IMDbWatchList
|
||||||
{
|
{
|
||||||
public class IMDbWatchListSettingsValidator : AbstractValidator<IMDbWatchListSettings>
|
public class IMDbWatchListSettingsValidator : AbstractValidator<IMDbWatchListSettings>
|
||||||
{
|
{
|
||||||
public IMDbWatchListSettingsValidator()
|
public IMDbWatchListSettingsValidator()
|
||||||
{
|
{
|
||||||
RuleFor(c => c.IMDbWatchListId).NotEmpty();
|
RuleFor(c => c.Link).NotEmpty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,10 +17,15 @@ namespace NzbDrone.Core.AutoImport.IMDbWatchList
|
||||||
{
|
{
|
||||||
private static readonly IMDbWatchListSettingsValidator Validator = new IMDbWatchListSettingsValidator();
|
private static readonly IMDbWatchListSettingsValidator Validator = new IMDbWatchListSettingsValidator();
|
||||||
|
|
||||||
[FieldDefinition(0, Label = "Watch List Id", HelpLink = "http://rss.imdb.com/list/")]
|
public IMDbWatchListSettings()
|
||||||
public string IMDbWatchListId { get; set; }
|
{
|
||||||
|
Link = "http://rss.imdb.com/list/";
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsValid => !string.IsNullOrWhiteSpace(IMDbWatchListId);
|
[FieldDefinition(0, Label = "Watch List RSS link", HelpLink = "http://rss.imdb.com/list/")]
|
||||||
|
public string Link { get; set; }
|
||||||
|
|
||||||
|
public bool IsValid => !string.IsNullOrWhiteSpace(Link);
|
||||||
|
|
||||||
public NzbDroneValidationResult Validate()
|
public NzbDroneValidationResult Validate()
|
||||||
{
|
{
|
|
@ -4,9 +4,9 @@ using NzbDrone.Core.Parser.Model;
|
||||||
using NzbDrone.Core.ThingiProvider;
|
using NzbDrone.Core.ThingiProvider;
|
||||||
using NzbDrone.Core.Tv;
|
using NzbDrone.Core.Tv;
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImporter
|
namespace NzbDrone.Core.NetImport
|
||||||
{
|
{
|
||||||
public interface IAutoImporter : IProvider
|
public interface INetImport : IProvider
|
||||||
{
|
{
|
||||||
string Link { get; }
|
string Link { get; }
|
||||||
bool Enabled { get; }
|
bool Enabled { get; }
|
|
@ -0,0 +1,9 @@
|
||||||
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public interface INetImportRequestGenerator
|
||||||
|
{
|
||||||
|
NetImportPageableRequestChain GetMovies();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
using NzbDrone.Core.Tv;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public interface IParseNetImportResponse
|
||||||
|
{
|
||||||
|
IList<Movie> ParseResponse(NetImportResponse netMovieImporterResponse);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,9 +11,9 @@ using NzbDrone.Core.Parser.Model;
|
||||||
using NzbDrone.Core.ThingiProvider;
|
using NzbDrone.Core.ThingiProvider;
|
||||||
using NzbDrone.Core.Tv;
|
using NzbDrone.Core.Tv;
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImporter
|
namespace NzbDrone.Core.NetImport
|
||||||
{
|
{
|
||||||
public abstract class AutoImporterBase<TSettings> : IAutoImporter
|
public abstract class NetImportBase<TSettings> : INetImport
|
||||||
where TSettings : IProviderConfig, new()
|
where TSettings : IProviderConfig, new()
|
||||||
{
|
{
|
||||||
protected readonly IConfigService _configService;
|
protected readonly IConfigService _configService;
|
||||||
|
@ -25,7 +25,7 @@ namespace NzbDrone.Core.AutoImporter
|
||||||
|
|
||||||
public abstract bool Enabled { get; }
|
public abstract bool Enabled { get; }
|
||||||
|
|
||||||
public AutoImporterBase(IConfigService configService, IParsingService parsingService, Logger logger)
|
public NetImportBase(IConfigService configService, IParsingService parsingService, Logger logger)
|
||||||
{
|
{
|
||||||
_configService = configService;
|
_configService = configService;
|
||||||
_parsingService = parsingService;
|
_parsingService = parsingService;
|
||||||
|
@ -42,7 +42,7 @@ namespace NzbDrone.Core.AutoImporter
|
||||||
{
|
{
|
||||||
var config = (IProviderConfig)new TSettings();
|
var config = (IProviderConfig)new TSettings();
|
||||||
|
|
||||||
yield return new AutoImporterDefinition
|
yield return new NetImportDefinition
|
||||||
{
|
{
|
||||||
Name = GetType().Name,
|
Name = GetType().Name,
|
||||||
Link = Link,
|
Link = Link,
|
|
@ -1,8 +1,8 @@
|
||||||
using NzbDrone.Core.ThingiProvider;
|
using NzbDrone.Core.ThingiProvider;
|
||||||
|
|
||||||
namespace NzbDrone.Core.AutoImporter
|
namespace NzbDrone.Core.NetImport
|
||||||
{
|
{
|
||||||
public class AutoImporterDefinition : ProviderDefinition
|
public class NetImportDefinition : ProviderDefinition
|
||||||
{
|
{
|
||||||
public bool Enabled { get; set; }
|
public bool Enabled { get; set; }
|
||||||
public string Link { get; set; }
|
public string Link { get; set; }
|
|
@ -0,0 +1,25 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public class NetImportPageableRequest : IEnumerable<NetImportRequest>
|
||||||
|
{
|
||||||
|
private readonly IEnumerable<NetImportRequest> _enumerable;
|
||||||
|
|
||||||
|
public NetImportPageableRequest(IEnumerable<NetImportRequest> enumerable)
|
||||||
|
{
|
||||||
|
_enumerable = enumerable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<NetImportRequest> GetEnumerator()
|
||||||
|
{
|
||||||
|
return _enumerable.GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
return _enumerable.GetEnumerator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public class NetImportPageableRequestChain
|
||||||
|
{
|
||||||
|
private List<List<NetImportPageableRequest>> _chains;
|
||||||
|
|
||||||
|
public NetImportPageableRequestChain()
|
||||||
|
{
|
||||||
|
_chains = new List<List<NetImportPageableRequest>>();
|
||||||
|
_chains.Add(new List<NetImportPageableRequest>());
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Tiers => _chains.Count;
|
||||||
|
|
||||||
|
public IEnumerable<NetImportPageableRequest> GetAllTiers()
|
||||||
|
{
|
||||||
|
return _chains.SelectMany(v => v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<NetImportPageableRequest> GetTier(int index)
|
||||||
|
{
|
||||||
|
return _chains[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Add(IEnumerable<NetImportRequest> request)
|
||||||
|
{
|
||||||
|
if (request == null) return;
|
||||||
|
|
||||||
|
_chains.Last().Add(new NetImportPageableRequest(request));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddTier(IEnumerable<NetImportRequest> request)
|
||||||
|
{
|
||||||
|
AddTier();
|
||||||
|
Add(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddTier()
|
||||||
|
{
|
||||||
|
if (_chains.Last().Count == 0) return;
|
||||||
|
|
||||||
|
_chains.Add(new List<NetImportPageableRequest>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
using NzbDrone.Core.Datastore;
|
||||||
|
using NzbDrone.Core.Messaging.Events;
|
||||||
|
using NzbDrone.Core.ThingiProvider;
|
||||||
|
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public interface INetImportRepository : IProviderRepository<NetImportDefinition>
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class NetImportRepository : ProviderRepository<NetImportDefinition>, INetImportRepository
|
||||||
|
{
|
||||||
|
public NetImportRepository(IMainDatabase database, IEventAggregator eventAggregator)
|
||||||
|
: base(database, eventAggregator)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
using NzbDrone.Common.Http;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public class NetImportRequest
|
||||||
|
{
|
||||||
|
public HttpRequest HttpRequest { get; private set; }
|
||||||
|
|
||||||
|
public NetImportRequest(string url, HttpAccept httpAccept)
|
||||||
|
{
|
||||||
|
HttpRequest = new HttpRequest(url, httpAccept);
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetImportRequest(HttpRequest httpRequest)
|
||||||
|
{
|
||||||
|
HttpRequest = httpRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HttpUri Url => HttpRequest.Url;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
using NzbDrone.Common.Http;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.NetImport
|
||||||
|
{
|
||||||
|
public class NetImportResponse
|
||||||
|
{
|
||||||
|
private readonly NetImportRequest _netImport;
|
||||||
|
private readonly HttpResponse _httpResponse;
|
||||||
|
|
||||||
|
public NetImportResponse(NetImportRequest netImport, HttpResponse httpResponse)
|
||||||
|
{
|
||||||
|
_netImport = netImport;
|
||||||
|
_httpResponse = httpResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetImportRequest Request => _netImport;
|
||||||
|
|
||||||
|
public HttpRequest HttpRequest => _httpResponse.Request;
|
||||||
|
|
||||||
|
public HttpResponse HttpResponse => _httpResponse;
|
||||||
|
|
||||||
|
public string Content => _httpResponse.Content;
|
||||||
|
}
|
||||||
|
}
|
|
@ -122,16 +122,24 @@
|
||||||
<Compile Include="Authentication\User.cs" />
|
<Compile Include="Authentication\User.cs" />
|
||||||
<Compile Include="Authentication\UserRepository.cs" />
|
<Compile Include="Authentication\UserRepository.cs" />
|
||||||
<Compile Include="Authentication\UserService.cs" />
|
<Compile Include="Authentication\UserService.cs" />
|
||||||
<Compile Include="AutoImport.derp\AutoImportBase.cs" />
|
<Compile Include="NetImport\Exceptions\NetImportException.cs" />
|
||||||
<Compile Include="AutoImport.derp\IAutoImport.cs" />
|
<Compile Include="NetImport\HttpNetImportBase.cs" />
|
||||||
<Compile Include="AutoImport.derp\IMDbWatchList\IMDbWatchList.cs" />
|
<Compile Include="NetImport\IProcessNetImportResponse.cs" />
|
||||||
<Compile Include="AutoImport.derp\IMDbWatchList\IMDbWatchListSettings.cs" />
|
<Compile Include="NetImport\NetImportPageableRequest.cs" />
|
||||||
<Compile Include="AutoImport.derp\IMDbWatchList\IMDbWatchListProxy.cs" />
|
<Compile Include="NetImport\NetImportPageableRequestChain.cs" />
|
||||||
<Compile Include="AutoImport.derp\AutoImportRepository.cs" />
|
<Compile Include="NetImport\INetImportRequestGenerator.cs" />
|
||||||
<Compile Include="AutoImport.derp\AutoImportDefinition.cs" />
|
<Compile Include="NetImport\IMDbWatchList\IMDbWatchListAPI.cs" />
|
||||||
<Compile Include="AutoImporter\AutoImporterBase.cs" />
|
<Compile Include="NetImport\IMDbWatchList\IMDbWatchListParser.cs" />
|
||||||
<Compile Include="AutoImporter\IAutoImporter.cs" />
|
<Compile Include="NetImport\IMDbWatchList\IMDbWatchListRequestGenerator.cs" />
|
||||||
<Compile Include="AutoImporter\AutoImporterDefinition.cs" />
|
<Compile Include="NetImport\NetImportRequest.cs" />
|
||||||
|
<Compile Include="NetImport\NetImportResponse.cs" />
|
||||||
|
<Compile Include="NetImport\NetImportBase.cs" />
|
||||||
|
<Compile Include="NetImport\NetImportRepository.cs" />
|
||||||
|
<Compile Include="NetImport\INetImport.cs" />
|
||||||
|
<Compile Include="NetImport\NetImportDefinition.cs" />
|
||||||
|
<Compile Include="NetImport\IMDbWatchList\IMDbWatchList.cs" />
|
||||||
|
<Compile Include="NetImport\IMDbWatchList\IMDbWatchListProxy.cs" />
|
||||||
|
<Compile Include="NetImport\IMDbWatchList\IMDbWatchListSettings.cs" />
|
||||||
<Compile Include="Backup\Backup.cs" />
|
<Compile Include="Backup\Backup.cs" />
|
||||||
<Compile Include="Backup\BackupCommand.cs" />
|
<Compile Include="Backup\BackupCommand.cs" />
|
||||||
<Compile Include="Backup\BackupService.cs" />
|
<Compile Include="Backup\BackupService.cs" />
|
||||||
|
|
Loading…
Reference in New Issue