2
0

ActivityLogService.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using System.Globalization;
  3. using System.Linq;
  4. using Jellyfin.Data.Entities;
  5. using MediaBrowser.Controller.Configuration;
  6. using MediaBrowser.Controller.Net;
  7. using MediaBrowser.Model.Activity;
  8. using MediaBrowser.Model.Querying;
  9. using MediaBrowser.Model.Services;
  10. using Microsoft.Extensions.Logging;
  11. namespace MediaBrowser.Api.System
  12. {
  13. [Route("/System/ActivityLog/Entries", "GET", Summary = "Gets activity log entries")]
  14. public class GetActivityLogs : IReturn<QueryResult<ActivityLogEntry>>
  15. {
  16. /// <summary>
  17. /// Skips over a given number of items within the results. Use for paging.
  18. /// </summary>
  19. /// <value>The start index.</value>
  20. [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")]
  21. public int? StartIndex { get; set; }
  22. /// <summary>
  23. /// The maximum number of items to return.
  24. /// </summary>
  25. /// <value>The limit.</value>
  26. [ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
  27. public int? Limit { get; set; }
  28. [ApiMember(Name = "MinDate", Description = "Optional. The minimum date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
  29. public string MinDate { get; set; }
  30. public bool? HasUserId { get; set; }
  31. }
  32. [Authenticated(Roles = "Admin")]
  33. public class ActivityLogService : BaseApiService
  34. {
  35. private readonly IActivityManager _activityManager;
  36. public ActivityLogService(
  37. ILogger<ActivityLogService> logger,
  38. IServerConfigurationManager serverConfigurationManager,
  39. IHttpResultFactory httpResultFactory,
  40. IActivityManager activityManager)
  41. : base(logger, serverConfigurationManager, httpResultFactory)
  42. {
  43. _activityManager = activityManager;
  44. }
  45. public object Get(GetActivityLogs request)
  46. {
  47. DateTime? minDate = string.IsNullOrWhiteSpace(request.MinDate) ?
  48. (DateTime?)null :
  49. DateTime.Parse(request.MinDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime();
  50. var filterFunc = new Func<IQueryable<ActivityLog>, IQueryable<ActivityLog>>(
  51. entries => entries.Where(entry => entry.DateCreated >= minDate
  52. && (!request.HasUserId.HasValue || (request.HasUserId.Value
  53. ? entry.UserId != Guid.Empty
  54. : entry.UserId == Guid.Empty))));
  55. var result = _activityManager.GetPagedResult(filterFunc, request.StartIndex, request.Limit);
  56. return ToOptimizedResult(result);
  57. }
  58. }
  59. }