@ -1,7 +1,5 @@
using System ;
using System.Collections.Generic ;
using System.Globalization ;
using System.Text ;
using System.Threading.Tasks ;
using Jellyfin.Data.Entities ;
using MediaBrowser.Common.Plugins ;
@ -15,7 +13,6 @@ using MediaBrowser.Model.Activity;
using MediaBrowser.Model.Events ;
using MediaBrowser.Model.Globalization ;
using MediaBrowser.Model.Notifications ;
using MediaBrowser.Model.Tasks ;
using MediaBrowser.Model.Updates ;
using Microsoft.Extensions.Logging ;
@ -28,7 +25,6 @@ namespace Emby.Server.Implementations.Activity
{
private readonly IInstallationManager _installationManager ;
private readonly ISessionManager _sessionManager ;
private readonly ITaskManager _taskManager ;
private readonly IActivityManager _activityManager ;
private readonly ILocalizationManager _localization ;
private readonly ISubtitleManager _subManager ;
@ -38,7 +34,6 @@ namespace Emby.Server.Implementations.Activity
/// Initializes a new instance of the <see cref="ActivityLogEntryPoint"/> class.
/// </summary>
/// <param name="sessionManager">The session manager.</param>
/// <param name="taskManager">The task manager.</param>
/// <param name="activityManager">The activity manager.</param>
/// <param name="localization">The localization manager.</param>
/// <param name="installationManager">The installation manager.</param>
@ -46,7 +41,6 @@ namespace Emby.Server.Implementations.Activity
/// <param name="userManager">The user manager.</param>
public ActivityLogEntryPoint (
ISessionManager sessionManager ,
ITaskManager taskManager ,
IActivityManager activityManager ,
ILocalizationManager localization ,
IInstallationManager installationManager ,
@ -54,7 +48,6 @@ namespace Emby.Server.Implementations.Activity
IUserManager userManager )
{
_sessionManager = sessionManager ;
_taskManager = taskManager ;
_activityManager = activityManager ;
_localization = localization ;
_installationManager = installationManager ;
@ -65,8 +58,6 @@ namespace Emby.Server.Implementations.Activity
/// <inheritdoc />
public Task RunAsync ( )
{
_taskManager . TaskCompleted + = OnTaskCompleted ;
_installationManager . PluginInstalled + = OnPluginInstalled ;
_installationManager . PluginUninstalled + = OnPluginUninstalled ;
_installationManager . PluginUpdated + = OnPluginUpdated ;
@ -307,57 +298,12 @@ namespace Emby.Server.Implementations.Activity
} ) . ConfigureAwait ( false ) ;
}
private async void OnTaskCompleted ( object sender , TaskCompletionEventArgs e )
{
var result = e . Result ;
var task = e . Task ;
if ( task . ScheduledTask is IConfigurableScheduledTask activityTask
& & ! activityTask . IsLogged )
{
return ;
}
var time = result . EndTimeUtc - result . StartTimeUtc ;
var runningTime = string . Format (
CultureInfo . InvariantCulture ,
_localization . GetLocalizedString ( "LabelRunningTimeValue" ) ,
ToUserFriendlyString ( time ) ) ;
if ( result . Status = = TaskCompletionStatus . Failed )
{
var vals = new List < string > ( ) ;
if ( ! string . IsNullOrEmpty ( e . Result . ErrorMessage ) )
{
vals . Add ( e . Result . ErrorMessage ) ;
}
if ( ! string . IsNullOrEmpty ( e . Result . LongErrorMessage ) )
{
vals . Add ( e . Result . LongErrorMessage ) ;
}
await CreateLogEntry ( new ActivityLog (
string . Format ( CultureInfo . InvariantCulture , _localization . GetLocalizedString ( "ScheduledTaskFailedWithName" ) , task . Name ) ,
NotificationType . TaskFailed . ToString ( ) ,
Guid . Empty )
{
LogSeverity = LogLevel . Error ,
Overview = string . Join ( Environment . NewLine , vals ) ,
ShortOverview = runningTime
} ) . ConfigureAwait ( false ) ;
}
}
private async Task CreateLogEntry ( ActivityLog entry )
= > await _activityManager . CreateAsync ( entry ) . ConfigureAwait ( false ) ;
/// <inheritdoc />
public void Dispose ( )
{
_taskManager . TaskCompleted - = OnTaskCompleted ;
_installationManager . PluginInstalled - = OnPluginInstalled ;
_installationManager . PluginUninstalled - = OnPluginUninstalled ;
_installationManager . PluginUpdated - = OnPluginUpdated ;
@ -375,87 +321,5 @@ namespace Emby.Server.Implementations.Activity
_userManager . OnUserDeleted - = OnUserDeleted ;
_userManager . OnUserLockedOut - = OnUserLockedOut ;
}
/// <summary>
/// Constructs a user-friendly string for this TimeSpan instance.
/// </summary>
private static string ToUserFriendlyString ( TimeSpan span )
{
const int DaysInYear = 365 ;
const int DaysInMonth = 30 ;
// Get each non-zero value from TimeSpan component
var values = new List < string > ( ) ;
// Number of years
int days = span . Days ;
if ( days > = DaysInYear )
{
int years = days / DaysInYear ;
values . Add ( CreateValueString ( years , "year" ) ) ;
days % = DaysInYear ;
}
// Number of months
if ( days > = DaysInMonth )
{
int months = days / DaysInMonth ;
values . Add ( CreateValueString ( months , "month" ) ) ;
days = days % DaysInMonth ;
}
// Number of days
if ( days > = 1 )
{
values . Add ( CreateValueString ( days , "day" ) ) ;
}
// Number of hours
if ( span . Hours > = 1 )
{
values . Add ( CreateValueString ( span . Hours , "hour" ) ) ;
}
// Number of minutes
if ( span . Minutes > = 1 )
{
values . Add ( CreateValueString ( span . Minutes , "minute" ) ) ;
}
// Number of seconds (include when 0 if no other components included)
if ( span . Seconds > = 1 | | values . Count = = 0 )
{
values . Add ( CreateValueString ( span . Seconds , "second" ) ) ;
}
// Combine values into string
var builder = new StringBuilder ( ) ;
for ( int i = 0 ; i < values . Count ; i + + )
{
if ( builder . Length > 0 )
{
builder . Append ( i = = values . Count - 1 ? " and " : ", " ) ;
}
builder . Append ( values [ i ] ) ;
}
// Return result
return builder . ToString ( ) ;
}
/// <summary>
/// Constructs a string description of a time-span value.
/// </summary>
/// <param name="value">The value of this item.</param>
/// <param name="description">The name of this item (singular form).</param>
private static string CreateValueString ( int value , string description )
{
return string . Format (
CultureInfo . InvariantCulture ,
"{0:#,##0} {1}" ,
value ,
value = = 1 ? description : string . Format ( CultureInfo . InvariantCulture , "{0}s" , description ) ) ;
}
}
}