Radarr/src/NzbDrone.Api/History/HistoryModule.cs

72 lines
2.5 KiB
C#
Raw Normal View History

2018-02-19 07:18:14 +00:00
using System;
using Nancy;
using NzbDrone.Api.Extensions;
2018-02-19 07:18:14 +00:00
using NzbDrone.Api.Movies;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
2013-05-03 06:53:32 +00:00
using NzbDrone.Core.History;
namespace NzbDrone.Api.History
{
2013-05-13 06:12:19 +00:00
public class HistoryModule : NzbDroneRestModule<HistoryResource>
2013-05-03 06:53:32 +00:00
{
private readonly IHistoryService _historyService;
private readonly IQualityUpgradableSpecification _qualityUpgradableSpecification;
private readonly IFailedDownloadService _failedDownloadService;
2013-05-03 06:53:32 +00:00
public HistoryModule(IHistoryService historyService,
IQualityUpgradableSpecification qualityUpgradableSpecification,
IFailedDownloadService failedDownloadService)
2013-05-03 06:53:32 +00:00
{
_historyService = historyService;
_qualityUpgradableSpecification = qualityUpgradableSpecification;
_failedDownloadService = failedDownloadService;
2013-05-13 06:12:19 +00:00
GetResourcePaged = GetHistory;
Post["/failed"] = x => MarkAsFailed();
2013-05-03 06:53:32 +00:00
}
protected HistoryResource MapToResource(Core.History.History model)
{
var resource = model.ToResource();
resource.Movie = model.Movie.ToResource();
if (model.Movie != null)
{
resource.QualityCutoffNotMet = _qualityUpgradableSpecification.CutoffNotMet(model.Movie.Profile.Value, model.Quality);
}
return resource;
}
2013-05-13 06:12:19 +00:00
private PagingResource<HistoryResource> GetHistory(PagingResource<HistoryResource> pagingResource)
2013-05-03 06:53:32 +00:00
{
var movieId = Request.Query.MovieId;
var pagingSpec = pagingResource.MapToPagingSpec<HistoryResource, Core.History.History>("date", SortDirection.Descending);
2013-05-03 06:53:32 +00:00
if (pagingResource.FilterKey == "eventType")
{
var filterValue = (HistoryEventType)Convert.ToInt32(pagingResource.FilterValue);
pagingSpec.FilterExpression = v => v.EventType == filterValue;
}
if (movieId.HasValue)
{
int i = (int)movieId;
pagingSpec.FilterExpression = h => h.MovieId == i;
}
return ApplyToPage(_historyService.Paged, pagingSpec, MapToResource);
2013-05-03 06:53:32 +00:00
}
private Response MarkAsFailed()
{
var id = (int)Request.Form.Id;
_failedDownloadService.MarkAsFailed(id);
return new object().AsResponse();
}
2013-05-03 06:53:32 +00:00
}
}