mirror of https://github.com/Ombi-app/Ombi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.2 KiB
102 lines
3.2 KiB
using Nancy;
|
|
using Nancy.Responses.Negotiation;
|
|
|
|
using RequestPlex.Api;
|
|
using RequestPlex.Core;
|
|
using RequestPlex.Store;
|
|
|
|
namespace RequestPlex.UI.Modules
|
|
{
|
|
public class SearchModule : NancyModule
|
|
{
|
|
public SearchModule()
|
|
{
|
|
Get["search/"] = parameters => RequestLoad();
|
|
|
|
Get["search/movie/{searchTerm}"] = parameters =>
|
|
{
|
|
var search = (string)parameters.searchTerm;
|
|
return SearchMovie(search);
|
|
};
|
|
|
|
Get["search/tv/{searchTerm}"] = parameters =>
|
|
{
|
|
var search = (string)parameters.searchTerm;
|
|
return SearchTvShow(search);
|
|
};
|
|
|
|
Get["search/movie/upcoming"] = parameters => UpcomingMovies();
|
|
Get["search/movie/playing"] = parameters => CurrentlyPlayingMovies();
|
|
|
|
Post["search/request/movie"] = parameters =>
|
|
{
|
|
var movieId = (int)Request.Form.movieId;
|
|
return RequestMovie(movieId);
|
|
};
|
|
|
|
Post["search/request/tv"] = parameters =>
|
|
{
|
|
var tvShowId = (int)Request.Form.tvId;
|
|
var latest = (bool)Request.Form.latestSeason;
|
|
return RequestTvShow(tvShowId, latest);
|
|
};
|
|
}
|
|
|
|
private Negotiator RequestLoad()
|
|
{
|
|
return View["Search/Index"];
|
|
}
|
|
|
|
private Response SearchMovie(string searchTerm)
|
|
{
|
|
var s = new SettingsService();
|
|
var api = new TheMovieDbApi();
|
|
var movies = api.SearchMovie(searchTerm);
|
|
var result = movies.Result;
|
|
return Response.AsJson(result);
|
|
}
|
|
|
|
private Response SearchTvShow(string searchTerm)
|
|
{
|
|
var api = new TheMovieDbApi();
|
|
var tvShow = api.SearchTv(searchTerm);
|
|
var result = tvShow.Result;
|
|
return Response.AsJson(result);
|
|
}
|
|
|
|
private Response UpcomingMovies()
|
|
{
|
|
var api = new TheMovieDbApi();
|
|
var movies = api.GetUpcomingMovies();
|
|
var result = movies.Result;
|
|
return Response.AsJson(result);
|
|
}
|
|
|
|
private Response CurrentlyPlayingMovies()
|
|
{
|
|
var api = new TheMovieDbApi();
|
|
var movies = api.GetCurrentPlayingMovies();
|
|
var result = movies.Result;
|
|
return Response.AsJson(result);
|
|
}
|
|
|
|
private Response RequestMovie(int movieId)
|
|
{
|
|
var s = new SettingsService();
|
|
if (s.CheckRequest(movieId))
|
|
{
|
|
return Response.AsJson(new { Result = false, Message = "Movie has already been requested!" });
|
|
}
|
|
s.AddRequest(movieId, RequestType.Movie);
|
|
return Response.AsJson(new { Result = true });
|
|
}
|
|
|
|
private Response RequestTvShow(int showId, bool latest)
|
|
{
|
|
// Latest send to Sonarr and no need to store in DB
|
|
var s = new SettingsService();
|
|
s.AddRequest(showId, RequestType.TvShow);
|
|
return Response.AsJson(new {Result = true });
|
|
}
|
|
}
|
|
} |