using System.Collections.Generic; using System.Linq; using Nancy; using NzbDrone.Core.MediaCover; using NzbDrone.Core.MetadataSource; using NzbDrone.Core.Organizer; using NzbDrone.Core.SeriesStats; using Sonarr.Http; namespace Sonarr.Api.V3.Series { public class SeriesLookupModule : SonarrRestModule { private readonly ISearchForNewSeries _searchProxy; private readonly IBuildFileNames _fileNameBuilder; private readonly IMapCoversToLocal _coverMapper; public SeriesLookupModule(ISearchForNewSeries searchProxy, IBuildFileNames fileNameBuilder, IMapCoversToLocal coverMapper) : base("/series/lookup") { _searchProxy = searchProxy; _fileNameBuilder = fileNameBuilder; _coverMapper = coverMapper; Get("/", x => Search()); } private object Search() { var tvDbResults = _searchProxy.SearchForNewSeries((string)Request.Query.term); return MapToResource(tvDbResults); } private IEnumerable MapToResource(IEnumerable series) { foreach (var currentSeries in series) { var resource = currentSeries.ToResource(); _coverMapper.ConvertToLocalUrls(resource.Id, resource.Images); var poster = currentSeries.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); if (poster != null) { resource.RemotePoster = poster.RemoteUrl; } resource.Folder = _fileNameBuilder.GetSeriesFolder(currentSeries); resource.Statistics = new SeriesStatistics().ToResource(resource.Seasons); yield return resource; } } } }