diff options
| author | 7illusions <z@7illusions.com> | 2014-05-12 16:55:07 +0200 |
|---|---|---|
| committer | 7illusions <z@7illusions.com> | 2014-05-12 16:55:07 +0200 |
| commit | baf5cf2544fcaad2246923f60caaf3fed4a94aaf (patch) | |
| tree | a808b700095f876e437b95c432c0220e241f9fda /MediaBrowser.Common.Implementations | |
| parent | 8f3a6279e173dcbaaa05a56556afb410ee12dd4d (diff) | |
| parent | b9b568de13d81f9db1a8502d50940475c1d79c72 (diff) | |
Merge pull request #3 from MediaBrowser/master
Sync with Master
Diffstat (limited to 'MediaBrowser.Common.Implementations')
| -rw-r--r-- | MediaBrowser.Common.Implementations/BaseApplicationHost.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj | 3 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs | 32 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs | 30 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs (renamed from MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerTask.cs) | 0 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/Security/MBRegistration.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/Security/RegRecord.cs | 11 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/Updates/InstallationManager.cs | 12 |
10 files changed, 79 insertions, 41 deletions
diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index 4946241fd..e488fd9bf 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -13,6 +13,7 @@ using MediaBrowser.Common.Progress; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Common.Security; using MediaBrowser.Common.Updates; +using MediaBrowser.Model.Events; using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index 69533ef9d..0a9f0ff8a 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -114,9 +114,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager request.AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None; - request.CachePolicy = options.CachePolicy == Net.HttpRequestCachePolicy.None ? - new RequestCachePolicy(RequestCacheLevel.BypassCache) : - new RequestCachePolicy(RequestCacheLevel.Revalidate); + request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache); request.ConnectionGroupName = GetHostFromUrl(options.Url); request.KeepAlive = true; @@ -124,6 +122,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager request.Pipelined = true; request.Timeout = 20000; + if (!string.IsNullOrEmpty(options.Host)) + { + request.Host = options.Host; + } + #if !__MonoCS__ // This is a hack to prevent KeepAlive from getting disabled internally by the HttpWebRequest // May need to remove this for mono @@ -230,12 +233,15 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager var httpWebRequest = GetRequest(options, httpMethod, options.EnableHttpCompression); - if (!string.IsNullOrEmpty(options.RequestContent) || string.Equals(httpMethod, "post", StringComparison.OrdinalIgnoreCase)) + if (options.RequestContentBytes != null || + !string.IsNullOrEmpty(options.RequestContent) || + string.Equals(httpMethod, "post", StringComparison.OrdinalIgnoreCase)) { - var content = options.RequestContent ?? string.Empty; - var bytes = Encoding.UTF8.GetBytes(content); + var bytes = options.RequestContentBytes ?? + Encoding.UTF8.GetBytes(options.RequestContent ?? string.Empty); httpWebRequest.ContentType = options.RequestContentType ?? "application/x-www-form-urlencoded"; + httpWebRequest.ContentLength = bytes.Length; httpWebRequest.GetRequestStream().Write(bytes, 0, bytes.Length); } diff --git a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj index f6f800f4a..fcb66d0bd 100644 --- a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj +++ b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj @@ -95,11 +95,12 @@ <Compile Include="ScheduledTasks\Tasks\DeleteCacheFileTask.cs" /> <Compile Include="ScheduledTasks\Tasks\DeleteLogFileTask.cs" /> <Compile Include="ScheduledTasks\Tasks\PluginUpdateTask.cs" /> - <Compile Include="ScheduledTasks\Tasks\ReloadLoggerTask.cs" /> + <Compile Include="ScheduledTasks\Tasks\ReloadLoggerFileTask.cs" /> <Compile Include="ScheduledTasks\Tasks\SystemUpdateTask.cs" /> <Compile Include="Security\MBLicenseFile.cs" /> <Compile Include="Security\MBRegistration.cs" /> <Compile Include="Security\PluginSecurityManager.cs" /> + <Compile Include="Security\RegRecord.cs" /> <Compile Include="Serialization\JsonSerializer.cs" /> <Compile Include="Serialization\XmlSerializer.cs" /> <Compile Include="Updates\InstallationManager.cs" /> diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 8f3f9b0a6..68222d843 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -1,6 +1,8 @@ using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Tasks; @@ -18,6 +20,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// </summary> public class ScheduledTaskWorker : IScheduledTaskWorker { + public event EventHandler<GenericEventArgs<double>> TaskProgress; + /// <summary> /// Gets or sets the scheduled task. /// </summary> @@ -269,22 +273,22 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// <summary> /// The _id /// </summary> - private Guid? _id; + private string _id; /// <summary> /// Gets the unique id. /// </summary> /// <value>The unique id.</value> - public Guid Id + public string Id { get { - if (!_id.HasValue) + if (_id == null) { - _id = ScheduledTask.GetType().FullName.GetMD5(); + _id = ScheduledTask.GetType().FullName.GetMD5().ToString("N"); } - return _id.Value; + return _id; } } @@ -344,13 +348,13 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks throw new InvalidOperationException("Cannot execute a Task that is already running"); } + var progress = new Progress<double>(); + CurrentCancellationTokenSource = new CancellationTokenSource(); Logger.Info("Executing {0}", Name); - ((TaskManager)TaskManager).OnTaskExecuting(ScheduledTask); - - var progress = new Progress<double>(); + ((TaskManager)TaskManager).OnTaskExecuting(this); progress.ProgressChanged += progress_ProgressChanged; @@ -412,6 +416,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks void progress_ProgressChanged(object sender, double e) { CurrentProgress = e; + + EventHelper.FireEventIfNotNull(TaskProgress, this, new GenericEventArgs<double> + { + Argument = e + + }, Logger); } /// <summary> @@ -464,7 +474,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// <value>The history file path.</value> private string GetHistoryFilePath() { - return Path.Combine(GetScheduledTasksDataDirectory(), Id + ".js"); + return Path.Combine(GetScheduledTasksDataDirectory(), new Guid(Id) + ".js"); } /// <summary> @@ -473,7 +483,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// <returns>System.String.</returns> private string GetConfigurationFilePath() { - return Path.Combine(GetScheduledTasksConfigurationDirectory(), Id + ".js"); + return Path.Combine(GetScheduledTasksConfigurationDirectory(), new Guid(Id) + ".js"); } /// <summary> @@ -546,7 +556,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks LastExecutionResult = result; - ((TaskManager) TaskManager).OnTaskCompleted(ScheduledTask, result); + ((TaskManager)TaskManager).OnTaskCompleted(this, result); } /// <summary> diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs index 6605432fa..5aec39b89 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Events; using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Tasks; @@ -16,8 +17,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// </summary> public class TaskManager : ITaskManager { - public event EventHandler<EventArgs> TaskExecuting; - public event EventHandler<GenericEventArgs<TaskResult>> TaskCompleted; + public event EventHandler<GenericEventArgs<IScheduledTaskWorker>> TaskExecuting; + public event EventHandler<TaskCompletionEventArgs> TaskCompleted; /// <summary> /// Gets the list of Scheduled Tasks @@ -124,7 +125,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks // If it's idle just execute immediately if (task.State == TaskState.Idle) { - ((ScheduledTaskWorker)task).Execute(); + Execute(task); return; } @@ -148,7 +149,8 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks { var myTasks = ScheduledTasks.ToList(); - myTasks.AddRange(tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger))); + var list = tasks.ToList(); + myTasks.AddRange(list.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger))); ScheduledTasks = myTasks.ToArray(); } @@ -188,9 +190,13 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// Called when [task executing]. /// </summary> /// <param name="task">The task.</param> - internal void OnTaskExecuting(IScheduledTask task) + internal void OnTaskExecuting(IScheduledTaskWorker task) { - EventHelper.QueueEventIfNotNull(TaskExecuting, task, EventArgs.Empty, Logger); + EventHelper.QueueEventIfNotNull(TaskExecuting, this, new GenericEventArgs<IScheduledTaskWorker> + { + Argument = task + + }, Logger); } /// <summary> @@ -198,9 +204,15 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// </summary> /// <param name="task">The task.</param> /// <param name="result">The result.</param> - internal void OnTaskCompleted(IScheduledTask task, TaskResult result) + internal void OnTaskCompleted(IScheduledTaskWorker task, TaskResult result) { - EventHelper.QueueEventIfNotNull(TaskCompleted, task, new GenericEventArgs<TaskResult> { Argument = result }, Logger); + EventHelper.QueueEventIfNotNull(TaskCompleted, task, new TaskCompletionEventArgs + { + Result = result, + Task = task + + }, Logger); + ExecuteQueuedTasks(); } @@ -218,7 +230,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks if (scheduledTask.State == TaskState.Idle) { - ((ScheduledTaskWorker)scheduledTask).Execute(); + Execute(scheduledTask); _taskQueue.Remove(type); } diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs index a5b8de554..dbeedfed5 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs @@ -25,7 +25,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks private readonly ILogger _logger; private readonly IFileSystem _fileSystem; - + /// <summary> /// Initializes a new instance of the <see cref="DeleteCacheFileTask" /> class. /// </summary> @@ -74,9 +74,11 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks progress.Report(90); + minDateModified = DateTime.UtcNow.AddDays(-3); + try { - DeleteCacheFilesFromDirectory(cancellationToken, ApplicationPaths.TempDirectory, DateTime.MaxValue, progress); + DeleteCacheFilesFromDirectory(cancellationToken, ApplicationPaths.TempDirectory, minDateModified, progress); } catch (DirectoryNotFoundException) { diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerTask.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs index 78f60632f..78f60632f 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerTask.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs diff --git a/MediaBrowser.Common.Implementations/Security/MBRegistration.cs b/MediaBrowser.Common.Implementations/Security/MBRegistration.cs index 1d64b5ea1..ca000df19 100644 --- a/MediaBrowser.Common.Implementations/Security/MBRegistration.cs +++ b/MediaBrowser.Common.Implementations/Security/MBRegistration.cs @@ -94,11 +94,4 @@ namespace MediaBrowser.Common.Implementations.Security return new MBRegistrationRecord { IsRegistered = reg.registered, ExpirationDate = reg.expDate, RegChecked = true }; } } - - class RegRecord - { - public string featId { get; set; } - public bool registered { get; set; } - public DateTime expDate { get; set; } - } } diff --git a/MediaBrowser.Common.Implementations/Security/RegRecord.cs b/MediaBrowser.Common.Implementations/Security/RegRecord.cs new file mode 100644 index 000000000..f4e4337bf --- /dev/null +++ b/MediaBrowser.Common.Implementations/Security/RegRecord.cs @@ -0,0 +1,11 @@ +using System; + +namespace MediaBrowser.Common.Implementations.Security +{ + class RegRecord + { + public string featId { get; set; } + public bool registered { get; set; } + public DateTime expDate { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs index 18462ba9b..fe484840a 100644 --- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs +++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs @@ -5,6 +5,7 @@ using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Progress; using MediaBrowser.Common.Security; using MediaBrowser.Common.Updates; +using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Updates; @@ -328,14 +329,14 @@ namespace MediaBrowser.Common.Implementations.Updates if (withAutoUpdateEnabled) { plugins = plugins - .Where(p => p.Configuration.EnableAutoUpdate) + .Where(p => _config.CommonConfiguration.EnableAutoUpdate) .ToList(); } // Figure out what needs to be installed var packages = plugins.Select(p => { - var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, p.Id.ToString(), applicationVersion, p.Configuration.UpdateClass); + var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, p.Id.ToString(), applicationVersion, _config.CommonConfiguration.SystemUpdateLevel); return latestPluginInfo != null && latestPluginInfo.version != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null; @@ -367,7 +368,7 @@ namespace MediaBrowser.Common.Implementations.Updates var installationInfo = new InstallationInfo { - Id = Guid.NewGuid(), + Id = Guid.NewGuid().ToString("N"), Name = package.name, AssemblyGuid = package.guid, UpdateClass = package.classification, @@ -510,13 +511,14 @@ namespace MediaBrowser.Common.Implementations.Updates cancellationToken.ThrowIfCancellationRequested(); // Validate with a checksum - if (package.checksum != Guid.Empty) // support for legacy uploads for now + var packageChecksum = string.IsNullOrWhiteSpace(package.checksum) ? Guid.Empty : new Guid(package.checksum); + if (packageChecksum != Guid.Empty) // support for legacy uploads for now { using (var crypto = new MD5CryptoServiceProvider()) using (var stream = new BufferedStream(File.OpenRead(tempFile), 100000)) { var check = Guid.Parse(BitConverter.ToString(crypto.ComputeHash(stream)).Replace("-", String.Empty)); - if (check != package.checksum) + if (check != packageChecksum) { throw new ApplicationException(string.Format("Download validation failed for {0}. Probably corrupted during transfer.", package.name)); } |
