|
|
|
@ -24,7 +24,7 @@
|
|
|
|
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
|
// ************************************************************************/
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using Nancy;
|
|
|
|
@ -32,6 +32,7 @@ using Nancy.Responses.Negotiation;
|
|
|
|
|
|
|
|
|
|
using PlexRequests.Api;
|
|
|
|
|
using PlexRequests.Core;
|
|
|
|
|
using PlexRequests.Core.SettingModels;
|
|
|
|
|
using PlexRequests.Helpers;
|
|
|
|
|
using PlexRequests.Store;
|
|
|
|
|
using PlexRequests.UI.Models;
|
|
|
|
@ -40,8 +41,9 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
{
|
|
|
|
|
public class SearchModule : NancyModule
|
|
|
|
|
{
|
|
|
|
|
public SearchModule(ICacheProvider cache) : base("search")
|
|
|
|
|
public SearchModule(ICacheProvider cache, ISettingsService<CouchPotatoSettings> cpSettings) : base("search")
|
|
|
|
|
{
|
|
|
|
|
CpService = cpSettings;
|
|
|
|
|
MovieApi = new TheMovieDbApi();
|
|
|
|
|
TvApi = new TheTvDbApi();
|
|
|
|
|
Cache = cache;
|
|
|
|
@ -60,6 +62,7 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
private TheMovieDbApi MovieApi { get; }
|
|
|
|
|
private TheTvDbApi TvApi { get; }
|
|
|
|
|
private ICacheProvider Cache { get; }
|
|
|
|
|
private ISettingsService<CouchPotatoSettings> CpService { get; set; }
|
|
|
|
|
private string AuthToken => Cache.GetOrSet(CacheKeys.TvDbToken, TvApi.Authenticate, 50);
|
|
|
|
|
|
|
|
|
|
private Negotiator RequestLoad()
|
|
|
|
@ -136,9 +139,34 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
{
|
|
|
|
|
return Response.AsJson(new { Result = false, Message = "Movie has already been requested!" });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s.AddRequest(movieId, RequestType.Movie);
|
|
|
|
|
return Response.AsJson(new { Result = true });
|
|
|
|
|
var settings = CpService.GetSettings();
|
|
|
|
|
var movieApi = new TheMovieDbApi();
|
|
|
|
|
var movieInfo = movieApi.GetMovieInformation(movieId).Result;
|
|
|
|
|
|
|
|
|
|
var model = new RequestedModel
|
|
|
|
|
{
|
|
|
|
|
ProviderId = movieInfo.Id,
|
|
|
|
|
Type = RequestType.Movie,
|
|
|
|
|
Overview = movieInfo.Overview,
|
|
|
|
|
ImdbId = movieInfo.ImdbId,
|
|
|
|
|
PosterPath = "http://image.tmdb.org/t/p/w150/" + movieInfo.PosterPath,
|
|
|
|
|
Title = movieInfo.Title,
|
|
|
|
|
ReleaseDate = movieInfo.ReleaseDate ?? DateTime.MinValue,
|
|
|
|
|
Status = movieInfo.Status,
|
|
|
|
|
RequestedDate = DateTime.Now,
|
|
|
|
|
Approved = false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var cp = new CouchPotatoApi();
|
|
|
|
|
|
|
|
|
|
var result = cp.AddMovie(model.ImdbId, settings.ApiKey, model.Title, settings.Ip);
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
s.AddRequest(movieId, model);
|
|
|
|
|
|
|
|
|
|
return Response.AsJson(new { Result = true });
|
|
|
|
|
}
|
|
|
|
|
return Response.AsJson(new { Result = false, Message = "Something went wrong adding the movie to CouchPotato! Please check your settings." });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -155,8 +183,34 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
{
|
|
|
|
|
return Response.AsJson(new { Result = false, Message = "TV Show has already been requested!" });
|
|
|
|
|
}
|
|
|
|
|
s.AddRequest(showId, RequestType.TvShow);
|
|
|
|
|
|
|
|
|
|
var tvApi = new TheTvDbApi();
|
|
|
|
|
var token = GetAuthToken(tvApi);
|
|
|
|
|
|
|
|
|
|
var showInfo = tvApi.GetInformation(showId, token).data;
|
|
|
|
|
|
|
|
|
|
DateTime firstAir;
|
|
|
|
|
DateTime.TryParse(showInfo.firstAired, out firstAir);
|
|
|
|
|
|
|
|
|
|
var model = new RequestedModel
|
|
|
|
|
{
|
|
|
|
|
ProviderId = showInfo.id,
|
|
|
|
|
Type = RequestType.TvShow,
|
|
|
|
|
Overview = showInfo.overview,
|
|
|
|
|
PosterPath = "http://image.tmdb.org/t/p/w150/" + showInfo.banner, // This is incorrect
|
|
|
|
|
Title = showInfo.seriesName,
|
|
|
|
|
ReleaseDate = firstAir,
|
|
|
|
|
Status = showInfo.status,
|
|
|
|
|
RequestedDate = DateTime.Now,
|
|
|
|
|
Approved = false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
s.AddRequest(showId, model);
|
|
|
|
|
return Response.AsJson(new {Result = true });
|
|
|
|
|
}
|
|
|
|
|
private string GetAuthToken(TheTvDbApi api)
|
|
|
|
|
{
|
|
|
|
|
return Cache.GetOrSet(CacheKeys.TvDbToken, api.Authenticate, 50);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|