using NzbDrone.Api.Episodes; using NzbDrone.Api.Series; using NzbDrone.Common.Extensions; using NzbDrone.Core.Parser; using Sonarr.Http; using Sonarr.Http.REST; namespace NzbDrone.Api.Parse { public class ParseModule : SonarrRestModule { private readonly IParsingService _parsingService; public ParseModule(IParsingService parsingService) { _parsingService = parsingService; GetResourceSingle = Parse; } private ParseResource Parse() { var title = Request.Query.Title.Value as string; var path = Request.Query.Path.Value as string; if (path.IsNullOrWhiteSpace() && title.IsNullOrWhiteSpace()) { throw new BadRequestException("title or path is missing"); } var parsedEpisodeInfo = path.IsNotNullOrWhiteSpace() ? Parser.ParsePath(path) : Parser.ParseTitle(title); if (parsedEpisodeInfo == null) { return null; } var remoteEpisode = _parsingService.Map(parsedEpisodeInfo, 0, 0); if (remoteEpisode != null) { return new ParseResource { Title = title, ParsedEpisodeInfo = remoteEpisode.ParsedEpisodeInfo, Series = remoteEpisode.Series.ToResource(), Episodes = remoteEpisode.Episodes.ToResource() }; } else { return new ParseResource { Title = title, ParsedEpisodeInfo = parsedEpisodeInfo }; } } } }