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

59 lines
2.0 KiB
C#
Raw Normal View History

using System;
using Nancy;
using NzbDrone.Api.Extensions;
using NzbDrone.Core.Datastore;
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 IFailedDownloadService _failedDownloadService;
2013-05-03 06:53:32 +00:00
public HistoryModule(IHistoryService historyService, IFailedDownloadService failedDownloadService)
2013-05-03 06:53:32 +00:00
{
_historyService = historyService;
_failedDownloadService = failedDownloadService;
2013-05-13 06:12:19 +00:00
GetResourcePaged = GetHistory;
Post["/failed"] = x => MarkAsFailed();
2013-05-03 06:53:32 +00:00
}
2013-05-13 06:12:19 +00:00
private PagingResource<HistoryResource> GetHistory(PagingResource<HistoryResource> pagingResource)
2013-05-03 06:53:32 +00:00
{
var episodeId = Request.Query.EpisodeId;
2013-05-10 22:33:04 +00:00
var pagingSpec = new PagingSpec<Core.History.History>
2013-05-03 06:53:32 +00:00
{
2013-05-13 06:12:19 +00:00
Page = pagingResource.Page,
PageSize = pagingResource.PageSize,
SortKey = pagingResource.SortKey,
SortDirection = pagingResource.SortDirection
2013-05-03 06:53:32 +00:00
};
//This is a hack to deal with backgrid setting the sortKey to the column name instead of sortValue
if (pagingSpec.SortKey.Equals("series", StringComparison.InvariantCultureIgnoreCase))
{
pagingSpec.SortKey = "series.title";
}
if (episodeId.HasValue)
{
int i = (int)episodeId;
pagingSpec.FilterExpression = h => h.EpisodeId == i;
}
2013-05-13 06:12:19 +00:00
return ApplyToPage(_historyService.Paged, pagingSpec);
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
}
}