diff --git a/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs new file mode 100644 index 000000000..f44103996 --- /dev/null +++ b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImport.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; +using NLog; +using NzbDrone.Common.Http; +using NzbDrone.Core.Configuration; +using NzbDrone.Core.Parser; +using NzbDrone.Core.ThingiProvider; + +namespace NzbDrone.Core.ImportLists.Rss.Imdb +{ + public class ImdbRssImport : RssImportBase + { + public override string Name => "IMDb RSS"; + public override ImportListType ListType => ImportListType.Advanced; + + public ImdbRssImport(IHttpClient httpClient, + IImportListStatusService importListStatusService, + IConfigService configService, + IParsingService parsingService, + Logger logger) + : base(httpClient, importListStatusService, configService, parsingService, logger) + { + } + + public override IEnumerable DefaultDefinitions + { + get + { + yield return new ImportListDefinition + { + Name = "IMDb RSS List", + Enabled = Enabled, + EnableAuto = true, + ProfileId = 1, + Implementation = GetType().Name, + Settings = new ImdbRssImportSettings { Url = "https://rss.imdb.com/list/YOURLISTID" }, + }; + yield return new ImportListDefinition + { + Name = "IMDb RSS Watchlist", + Enabled = Enabled, + EnableAuto = true, + ProfileId = 1, + Implementation = GetType().Name, + Settings = new ImdbRssImportSettings { Url = "https://rss.imdb.com/user/IMDBUSERID/watchlist" }, + }; + } + } + + public override IParseImportListResponse GetParser() + { + return new ImdbRssImportParser(_logger); + } + } +} diff --git a/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportParser.cs b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportParser.cs new file mode 100644 index 000000000..7687f2fc2 --- /dev/null +++ b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportParser.cs @@ -0,0 +1,20 @@ +using System; +using System.Xml.Linq; +using NLog; +using NzbDrone.Core.ImportLists.ImportListMovies; + +namespace NzbDrone.Core.ImportLists.Rss.Imdb +{ + public class ImdbRssImportParser : RssImportBaseParser + { + public ImdbRssImportParser(Logger logger) + : base(logger) + { + } + + protected override ImportListMovie ProcessItem(XElement item) + { + throw new NotImplementedException(); + } + } +} diff --git a/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportSettings.cs b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportSettings.cs new file mode 100644 index 000000000..5eed959ce --- /dev/null +++ b/src/NzbDrone.Core/ImportLists/Rss/Imdb/ImdbRssImportSettings.cs @@ -0,0 +1,27 @@ +using FluentValidation; +using NzbDrone.Core.Annotations; +using NzbDrone.Core.Validation; + +namespace NzbDrone.Core.ImportLists.Rss.Imdb +{ + public class ImdbRssImportSettingsValidator : AbstractValidator + { + public ImdbRssImportSettingsValidator() + { + RuleFor(c => c.Url).NotEmpty(); + } + } + + public class ImdbRssImportSettings : RssImportBaseSettings + { + private ImdbRssImportSettingsValidator Validator => new (); + + [FieldDefinition(0, Label = "Url", Type = FieldType.Textbox)] + public override string Url { get; set; } + + public override NzbDroneValidationResult Validate() + { + return new NzbDroneValidationResult(Validator.Validate(this)); + } + } +}