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);
}
}
}