diff --git a/src/Radarr.Api.V3/Parse/ParseModule.cs b/src/Radarr.Api.V3/Parse/ParseModule.cs new file mode 100644 index 000000000..9e690dbf7 --- /dev/null +++ b/src/Radarr.Api.V3/Parse/ParseModule.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using NzbDrone.Common.Extensions; +using NzbDrone.Core.Configuration; +using NzbDrone.Core.Exceptions; +using NzbDrone.Core.Parser; +using Radarr.Api.V3.Movies; +using Radarr.Http; + +namespace Radarr.Api.V3.Parse +{ + public class ParseModule : RadarrRestModule + { + private readonly IParsingService _parsingService; + private readonly IConfigService _configService; + + public ParseModule(IParsingService parsingService, IConfigService configService) + { + _parsingService = parsingService; + _configService = configService; + + GetResourceSingle = Parse; + } + + private ParseResource Parse() + { + var title = Request.Query.Title.Value as string; + + if (title.IsNullOrWhiteSpace()) + { + return null; + } + + var parsedMovieInfo = _parsingService.ParseMovieInfo(title, new List()); + + if (parsedMovieInfo == null) + { + return null; + } + + var remoteMovie = _parsingService.Map(parsedMovieInfo, ""); + + if (remoteMovie != null) + { + return new ParseResource + { + Title = title, + ParsedMovieInfo = remoteMovie.RemoteMovie.ParsedMovieInfo, + Movie = remoteMovie.Movie.ToResource(_configService.AvailabilityDelay) + }; + } + else + { + return new ParseResource + { + Title = title, + ParsedMovieInfo = parsedMovieInfo + }; + } + } + } +} diff --git a/src/Radarr.Api.V3/Parse/ParseResource.cs b/src/Radarr.Api.V3/Parse/ParseResource.cs new file mode 100644 index 000000000..10bd14617 --- /dev/null +++ b/src/Radarr.Api.V3/Parse/ParseResource.cs @@ -0,0 +1,13 @@ +using NzbDrone.Core.Parser.Model; +using Radarr.Api.V3.Movies; +using Radarr.Http.REST; + +namespace Radarr.Api.V3.Parse +{ + public class ParseResource : RestResource + { + public string Title { get; set; } + public ParsedMovieInfo ParsedMovieInfo { get; set; } + public MovieResource Movie { get; set; } + } +}