using System.Collections.Generic; using Nancy; using NzbDrone.Api.Extensions; using NzbDrone.Core.MediaCover; using NzbDrone.Core.MetadataSource; using System.Linq; using System; using NzbDrone.Api.REST; namespace NzbDrone.Api.Movie { public class MovieLookupModule : NzbDroneRestModule { private readonly ISearchForNewMovie _searchProxy; private readonly IProvideMovieInfo _movieInfo; public MovieLookupModule(ISearchForNewMovie searchProxy, IProvideMovieInfo movieInfo) : base("/movies/lookup") { _movieInfo = movieInfo; _searchProxy = searchProxy; Get["/"] = x => Search(); Get["/tmdb"] = x => SearchByTmdbId(); } private Response SearchByTmdbId() { int tmdbId = -1; if(Int32.TryParse(Request.Query.tmdbId, out tmdbId)) { var result = _movieInfo.GetMovieInfo(tmdbId, null); return result.ToResource().AsResponse(); } throw new BadRequestException("Tmdb Id was not valid"); } private Response Search() { var imdbResults = _searchProxy.SearchForNewMovie((string)Request.Query.term); return MapToResource(imdbResults).AsResponse(); } private static IEnumerable MapToResource(IEnumerable movies) { foreach (var currentSeries in movies) { var resource = currentSeries.ToResource(); var poster = currentSeries.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); if (poster != null) { resource.RemotePoster = poster.Url; } yield return resource; } } } }