Sfoglia il codice sorgente

update collection menus

Luke Pulverenti 9 anni fa
parent
commit
b1859d41e8

+ 14 - 1
MediaBrowser.Common.Implementations/Configuration/BaseConfigurationManager.cs

@@ -9,6 +9,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Threading;
+using CommonIO;
 
 namespace MediaBrowser.Common.Implementations.Configuration
 {
@@ -54,6 +55,7 @@ namespace MediaBrowser.Common.Implementations.Configuration
         /// </summary>
         /// <value>The application paths.</value>
         public IApplicationPaths CommonApplicationPaths { get; private set; }
+        public readonly IFileSystem FileSystem;
 
         /// <summary>
         /// The _configuration loaded
@@ -96,10 +98,11 @@ namespace MediaBrowser.Common.Implementations.Configuration
         /// <param name="applicationPaths">The application paths.</param>
         /// <param name="logManager">The log manager.</param>
         /// <param name="xmlSerializer">The XML serializer.</param>
-        protected BaseConfigurationManager(IApplicationPaths applicationPaths, ILogManager logManager, IXmlSerializer xmlSerializer)
+        protected BaseConfigurationManager(IApplicationPaths applicationPaths, ILogManager logManager, IXmlSerializer xmlSerializer, IFileSystem fileSystem)
         {
             CommonApplicationPaths = applicationPaths;
             XmlSerializer = xmlSerializer;
+            FileSystem = fileSystem;
             Logger = logManager.GetLogger(GetType().Name);
 
             UpdateCachePath();
@@ -199,9 +202,19 @@ namespace MediaBrowser.Common.Implementations.Configuration
                 {
                     throw new DirectoryNotFoundException(string.Format("{0} does not exist.", newPath));
                 }
+
+                EnsureWriteAccess(newPath);
             }
         }
 
+        protected void EnsureWriteAccess(string path)
+        {
+            var file = Path.Combine(path, Guid.NewGuid().ToString());
+
+            FileSystem.WriteAllText(file, string.Empty);
+            FileSystem.DeleteFile(file);
+        }
+
         private readonly ConcurrentDictionary<string, object> _configurations = new ConcurrentDictionary<string, object>();
 
         private string GetConfigurationFile(string key)

+ 17 - 8
MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs

@@ -465,7 +465,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             }
             catch (OperationCanceledException ex)
             {
-                var exception = GetCancellationException(options.Url, options.CancellationToken, ex);
+                var exception = GetCancellationException(options, options.CancellationToken, ex);
 
                 var httpException = exception as HttpException;
 
@@ -497,7 +497,10 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
         /// <returns>HttpException.</returns>
         private HttpException GetException(WebException ex, HttpRequestOptions options)
         {
-            _logger.ErrorException("Error getting response from " + options.Url, ex);
+            if (options.LogErrors)
+            {
+                _logger.ErrorException("Error getting response from " + options.Url, ex);
+            }
 
             var exception = new HttpException(ex.Message, ex);
 
@@ -710,10 +713,13 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 
             if (operationCanceledException != null)
             {
-                return GetCancellationException(options.Url, options.CancellationToken, operationCanceledException);
+                return GetCancellationException(options, options.CancellationToken, operationCanceledException);
             }
 
-            _logger.ErrorException("Error getting response from " + options.Url, ex);
+            if (options.LogErrors)
+            {
+                _logger.ErrorException("Error getting response from " + options.Url, ex);
+            }
 
             return ex;
         }
@@ -785,18 +791,21 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
         /// <summary>
         /// Throws the cancellation exception.
         /// </summary>
-        /// <param name="url">The URL.</param>
+        /// <param name="options">The options.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <param name="exception">The exception.</param>
         /// <returns>Exception.</returns>
-        private Exception GetCancellationException(string url, CancellationToken cancellationToken, OperationCanceledException exception)
+        private Exception GetCancellationException(HttpRequestOptions options, CancellationToken cancellationToken, OperationCanceledException exception)
         {
             // If the HttpClient's timeout is reached, it will cancel the Task internally
             if (!cancellationToken.IsCancellationRequested)
             {
-                var msg = string.Format("Connection to {0} timed out", url);
+                var msg = string.Format("Connection to {0} timed out", options.Url);
 
-                _logger.Error(msg);
+                if (options.LogErrors)
+                {
+                    _logger.Error(msg);
+                }
 
                 // Throw an HttpException so that the caller doesn't think it was cancelled by user code
                 return new HttpException(msg, exception)

+ 2 - 0
MediaBrowser.Common/Net/HttpRequestOptions.cs

@@ -87,6 +87,7 @@ namespace MediaBrowser.Common.Net
         public bool BufferContent { get; set; }
 
         public bool LogRequest { get; set; }
+        public bool LogErrors { get; set; }
 
         public bool LogErrorResponseBody { get; set; }
         public bool EnableKeepAlive { get; set; }
@@ -116,6 +117,7 @@ namespace MediaBrowser.Common.Net
             RequestHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
 
             LogRequest = true;
+            LogErrors = true;
             CacheMode = CacheMode.None;
 
             TimeoutMs = 20000;

+ 15 - 14
MediaBrowser.Server.Implementations/Collections/CollectionManager.cs

@@ -172,30 +172,31 @@ namespace MediaBrowser.Server.Implementations.Collections
 
                 itemList.Add(item);
 
-                if (currentLinkedChildren.Any(i => i.Id == itemId))
+                if (currentLinkedChildren.All(i => i.Id != itemId))
                 {
-                    throw new ArgumentException("Item already exists in collection");
+                    list.Add(LinkedChild.Create(item));
                 }
-
-                list.Add(LinkedChild.Create(item));
             }
 
-            collection.LinkedChildren.AddRange(list);
+            if (list.Count > 0)
+            {
+                collection.LinkedChildren.AddRange(list);
 
-            collection.UpdateRatingToContent();
+                collection.UpdateRatingToContent();
 
-            await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+                await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
 
-            _providerManager.QueueRefresh(collection.Id, new MetadataRefreshOptions(_fileSystem));
+                _providerManager.QueueRefresh(collection.Id, new MetadataRefreshOptions(_fileSystem));
 
-            if (fireEvent)
-            {
-                EventHelper.FireEventIfNotNull(ItemsAddedToCollection, this, new CollectionModifiedEventArgs
+                if (fireEvent)
                 {
-                    Collection = collection,
-                    ItemsChanged = itemList
+                    EventHelper.FireEventIfNotNull(ItemsAddedToCollection, this, new CollectionModifiedEventArgs
+                    {
+                        Collection = collection,
+                        ItemsChanged = itemList
 
-                }, _logger);
+                    }, _logger);
+                }
             }
         }
 

+ 4 - 14
MediaBrowser.Server.Implementations/Configuration/ServerConfigurationManager.cs

@@ -16,7 +16,6 @@ using System;
 using System.IO;
 using System.Linq;
 using CommonIO;
-using MediaBrowser.Common.IO;
 
 namespace MediaBrowser.Server.Implementations.Configuration
 {
@@ -25,7 +24,6 @@ namespace MediaBrowser.Server.Implementations.Configuration
     /// </summary>
     public class ServerConfigurationManager : BaseConfigurationManager, IServerConfigurationManager
     {
-        private readonly IFileSystem _fileSystem;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerConfigurationManager" /> class.
@@ -33,10 +31,10 @@ namespace MediaBrowser.Server.Implementations.Configuration
         /// <param name="applicationPaths">The application paths.</param>
         /// <param name="logManager">The log manager.</param>
         /// <param name="xmlSerializer">The XML serializer.</param>
+        /// <param name="fileSystem">The file system.</param>
         public ServerConfigurationManager(IApplicationPaths applicationPaths, ILogManager logManager, IXmlSerializer xmlSerializer, IFileSystem fileSystem)
-            : base(applicationPaths, logManager, xmlSerializer)
+            : base(applicationPaths, logManager, xmlSerializer, fileSystem)
         {
-            _fileSystem = fileSystem;
             UpdateItemsByNamePath();
             UpdateMetadataPath();
         }
@@ -203,7 +201,7 @@ namespace MediaBrowser.Server.Implementations.Configuration
                 && !string.Equals(Configuration.ItemsByNamePath ?? string.Empty, newPath))
             {
                 // Validate
-                if (!_fileSystem.DirectoryExists(newPath))
+                if (!FileSystem.DirectoryExists(newPath))
                 {
                     throw new DirectoryNotFoundException(string.Format("{0} does not exist.", newPath));
                 }
@@ -225,7 +223,7 @@ namespace MediaBrowser.Server.Implementations.Configuration
                 && !string.Equals(Configuration.MetadataPath ?? string.Empty, newPath))
             {
                 // Validate
-                if (!_fileSystem.DirectoryExists(newPath))
+                if (!FileSystem.DirectoryExists(newPath))
                 {
                     throw new DirectoryNotFoundException(string.Format("{0} does not exist.", newPath));
                 }
@@ -234,14 +232,6 @@ namespace MediaBrowser.Server.Implementations.Configuration
             }
         }
 
-        private void EnsureWriteAccess(string path)
-        {
-            var file = Path.Combine(path, Guid.NewGuid().ToString());
-
-            _fileSystem.WriteAllText(file, string.Empty);
-            _fileSystem.DeleteFile(file);
-        }
-
         public void DisableMetadataService(string service)
         {
             DisableMetadataService(typeof(Movie), Configuration, service);

+ 15 - 4
MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs

@@ -49,14 +49,23 @@ namespace MediaBrowser.Server.Implementations.Connect
 
         private async void TimerCallback(object state)
         {
+            var index = 0;
+
             foreach (var ipLookupUrl in _ipLookups)
             {
                 try
                 {
+                    // Sometimes whatismyipaddress might fail, but it won't do us any good having users raise alarms over it.
+                    var logErrors = index > 0;
+
+#if DEBUG
+                    logErrors = true;
+#endif
                     using (var stream = await _httpClient.Get(new HttpRequestOptions
                     {
                         Url = ipLookupUrl,
-                        UserAgent = "Emby Server/" + _appHost.ApplicationVersion
+                        UserAgent = "Emby Server/" + _appHost.ApplicationVersion,
+                        LogErrors = logErrors
 
                     }).ConfigureAwait(false))
                     {
@@ -80,6 +89,8 @@ namespace MediaBrowser.Server.Implementations.Connect
                 {
                     _logger.ErrorException("Error getting connection info", ex);
                 }
+
+                index++;
             }
         }
 
@@ -94,8 +105,8 @@ namespace MediaBrowser.Server.Implementations.Connect
 
             try
             {
-				_fileSystem.CreateDirectory(Path.GetDirectoryName(path));
-				_fileSystem.WriteAllText(path, address, Encoding.UTF8);
+                _fileSystem.CreateDirectory(Path.GetDirectoryName(path));
+                _fileSystem.WriteAllText(path, address, Encoding.UTF8);
             }
             catch (Exception ex)
             {
@@ -109,7 +120,7 @@ namespace MediaBrowser.Server.Implementations.Connect
 
             try
             {
-				var endpoint = _fileSystem.ReadAllText(path, Encoding.UTF8);
+                var endpoint = _fileSystem.ReadAllText(path, Encoding.UTF8);
 
                 if (IsValid(endpoint))
                 {