using System; using System.Threading.Tasks; using Jellyfin.Api.Constants; using Jellyfin.Data.Queries; using MediaBrowser.Model.Activity; using MediaBrowser.Model.Querying; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Jellyfin.Api.Controllers { /// /// Activity log controller. /// [Route("System/ActivityLog")] [Authorize(Policy = Policies.RequiresElevation)] public class ActivityLogController : BaseJellyfinApiController { private readonly IActivityManager _activityManager; /// /// Initializes a new instance of the class. /// /// Instance of interface. public ActivityLogController(IActivityManager activityManager) { _activityManager = activityManager; } /// /// Gets activity log entries. /// /// Optional. The record index to start at. All items with a lower index will be dropped from the results. /// Optional. The maximum number of records to return. /// Optional. The minimum date. Format = ISO. /// Optional. Filter log entries if it has user id, or not. /// Activity log returned. /// A containing the log entries. [HttpGet("Entries")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task>> GetLogEntries( [FromQuery] int? startIndex, [FromQuery] int? limit, [FromQuery] DateTime? minDate, [FromQuery] bool? hasUserId) { return await _activityManager.GetPagedResultAsync(new ActivityLogQuery { Skip = startIndex, Limit = limit, MinDate = minDate, HasUserId = hasUserId }).ConfigureAwait(false); } } }