2020-05-14 23:13:45 +02:00
using System ;
using System.Globalization ;
using System.Linq ;
using Jellyfin.Data.Entities ;
2019-11-17 23:05:39 +01:00
using MediaBrowser.Controller.Configuration ;
2019-01-13 20:24:58 +01:00
using MediaBrowser.Controller.Net ;
2014-08-11 00:13:17 +02:00
using MediaBrowser.Model.Activity ;
using MediaBrowser.Model.Querying ;
2016-10-25 21:02:04 +02:00
using MediaBrowser.Model.Services ;
2019-11-17 23:05:39 +01:00
using Microsoft.Extensions.Logging ;
2014-08-11 00:13:17 +02:00
namespace MediaBrowser.Api.System
{
[Route("/System/ActivityLog/Entries", "GET", Summary = "Gets activity log entries")]
public class GetActivityLogs : IReturn < QueryResult < ActivityLogEntry > >
{
/// <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 ; }
2014-08-14 15:24:30 +02:00
2018-09-12 19:26:21 +02:00
[ApiMember(Name = "MinDate", Description = "Optional. The minimum date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
2014-08-14 15:24:30 +02:00
public string MinDate { get ; set ; }
2018-09-12 19:26:21 +02:00
public bool? HasUserId { get ; set ; }
2014-08-11 00:13:17 +02:00
}
2014-11-15 03:31:03 +01:00
[Authenticated(Roles = "Admin")]
2014-08-11 00:13:17 +02:00
public class ActivityLogService : BaseApiService
{
private readonly IActivityManager _activityManager ;
2019-11-17 23:05:39 +01:00
public ActivityLogService (
ILogger < ActivityLogService > logger ,
IServerConfigurationManager serverConfigurationManager ,
IHttpResultFactory httpResultFactory ,
IActivityManager activityManager )
: base ( logger , serverConfigurationManager , httpResultFactory )
2014-08-11 00:13:17 +02:00
{
_activityManager = activityManager ;
}
public object Get ( GetActivityLogs request )
{
2020-05-14 23:13:45 +02:00
DateTime ? minDate = string . IsNullOrWhiteSpace ( request . MinDate ) ?
( DateTime ? ) null :
DateTime . Parse ( request . MinDate , null , DateTimeStyles . RoundtripKind ) . ToUniversalTime ( ) ;
var filterFunc = new Func < IQueryable < ActivityLog > , IQueryable < ActivityLog > > (
entries = > entries . Where ( entry = > entry . DateCreated > = minDate ) ) ;
var result = _activityManager . GetPagedResult ( filterFunc , request . StartIndex , request . Limit ) ;
2014-08-11 00:13:17 +02:00
return ToOptimizedResult ( result ) ;
}
}
}