using System; using System.Globalization; using Jellyfin.Api.Constants; using MediaBrowser.Model.Activity; using MediaBrowser.Model.Querying; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Jellyfin.Api.Controllers.System { /// /// Activity log controller. /// [Route("/System/ActivityLog/Entries")] [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. Only returns activities that have a user associated. /// Activity log returned. /// A containing the log entries. [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] public ActionResult> GetLogEntries( [FromQuery] int? startIndex, [FromQuery] int? limit, [FromQuery] string minDate, bool? hasUserId) { DateTime? startDate = string.IsNullOrWhiteSpace(minDate) ? (DateTime?)null : DateTime.Parse(minDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); return _activityManager.GetActivityLogEntries(startDate, hasUserId, startIndex, limit); } } }