mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-06 03:26:07 +02:00
stub out reports api
This commit is contained in:
parent
504e2099e2
commit
49def5de6a
5 changed files with 126 additions and 0 deletions
|
@ -82,6 +82,10 @@
|
|||
<Compile Include="Playback\Hls\MpegDashService.cs" />
|
||||
<Compile Include="Playback\MediaInfoService.cs" />
|
||||
<Compile Include="PlaylistService.cs" />
|
||||
<Compile Include="Reports\ReportFieldType.cs" />
|
||||
<Compile Include="Reports\ReportResult.cs" />
|
||||
<Compile Include="Reports\ReportsService.cs" />
|
||||
<Compile Include="Reports\ReportRequests.cs" />
|
||||
<Compile Include="StartupWizardService.cs" />
|
||||
<Compile Include="Subtitles\SubtitleService.cs" />
|
||||
<Compile Include="Movies\CollectionService.cs" />
|
||||
|
|
9
MediaBrowser.Api/Reports/ReportFieldType.cs
Normal file
9
MediaBrowser.Api/Reports/ReportFieldType.cs
Normal file
|
@ -0,0 +1,9 @@
|
|||
|
||||
namespace MediaBrowser.Api.Reports
|
||||
{
|
||||
public enum ReportFieldType
|
||||
{
|
||||
String,
|
||||
Boolean
|
||||
}
|
||||
}
|
33
MediaBrowser.Api/Reports/ReportRequests.cs
Normal file
33
MediaBrowser.Api/Reports/ReportRequests.cs
Normal file
|
@ -0,0 +1,33 @@
|
|||
using ServiceStack;
|
||||
|
||||
namespace MediaBrowser.Api.Reports
|
||||
{
|
||||
public class BaseReportRequest : IReturn<ReportResult>
|
||||
{
|
||||
/// <summary>
|
||||
/// Specify this to localize the search to a specific item or folder. Omit to use the root.
|
||||
/// </summary>
|
||||
/// <value>The parent id.</value>
|
||||
[ApiMember(Name = "ParentId", Description = "Specify this to localize the search to a specific item or folder. Omit to use the root", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
|
||||
public string ParentId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Skips over a given number of items within the results. Use for paging.
|
||||
/// </summary>
|
||||
/// <value>The start index.</value>
|
||||
[ApiMember(Name = "StartIndex", Description = "Optional. The record index to start at. All items with a lower index will be dropped from the results.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
|
||||
public int? StartIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The maximum number of items to return
|
||||
/// </summary>
|
||||
/// <value>The limit.</value>
|
||||
[ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
|
||||
public int? Limit { get; set; }
|
||||
}
|
||||
|
||||
[Route("/Reports/Items", "GET", Summary = "Gets reports based on library items")]
|
||||
public class GetItemReport : BaseReportRequest
|
||||
{
|
||||
}
|
||||
}
|
16
MediaBrowser.Api/Reports/ReportResult.cs
Normal file
16
MediaBrowser.Api/Reports/ReportResult.cs
Normal file
|
@ -0,0 +1,16 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace MediaBrowser.Api.Reports
|
||||
{
|
||||
public class ReportResult
|
||||
{
|
||||
public List<List<string>> Rows { get; set; }
|
||||
public List<ReportFieldType> Columns { get; set; }
|
||||
|
||||
public ReportResult()
|
||||
{
|
||||
Rows = new List<List<string>>();
|
||||
Columns = new List<ReportFieldType>();
|
||||
}
|
||||
}
|
||||
}
|
64
MediaBrowser.Api/Reports/ReportsService.cs
Normal file
64
MediaBrowser.Api/Reports/ReportsService.cs
Normal file
|
@ -0,0 +1,64 @@
|
|||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Model.Querying;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MediaBrowser.Api.Reports
|
||||
{
|
||||
public class ReportsService : BaseApiService
|
||||
{
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
|
||||
public ReportsService(ILibraryManager libraryManager)
|
||||
{
|
||||
_libraryManager = libraryManager;
|
||||
}
|
||||
|
||||
public async Task<object> Get(GetItemReport request)
|
||||
{
|
||||
var queryResult = await GetQueryResult(request).ConfigureAwait(false);
|
||||
|
||||
var reportResult = GetReportResult(queryResult);
|
||||
|
||||
return ToOptimizedResult(reportResult);
|
||||
}
|
||||
|
||||
private ReportResult GetReportResult(QueryResult<BaseItem> queryResult)
|
||||
{
|
||||
var reportResult = new ReportResult();
|
||||
|
||||
// Fill rows and columns
|
||||
|
||||
return reportResult;
|
||||
}
|
||||
|
||||
private Task<QueryResult<BaseItem>> GetQueryResult(BaseReportRequest request)
|
||||
{
|
||||
// Placeholder in case needed later
|
||||
User user = null;
|
||||
|
||||
var parentItem = string.IsNullOrEmpty(request.ParentId) ?
|
||||
(user == null ? _libraryManager.RootFolder : user.RootFolder) :
|
||||
_libraryManager.GetItemById(request.ParentId);
|
||||
|
||||
return ((Folder)parentItem).GetItems(GetItemsQuery(request, user));
|
||||
}
|
||||
|
||||
private InternalItemsQuery GetItemsQuery(BaseReportRequest request, User user)
|
||||
{
|
||||
var query = new InternalItemsQuery
|
||||
{
|
||||
User = user,
|
||||
CollapseBoxSetItems = false
|
||||
};
|
||||
|
||||
// Set query values based on request
|
||||
|
||||
// Example
|
||||
//query.IncludeItemTypes = new[] {"Movie"};
|
||||
|
||||
|
||||
return query;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue