diff options
| author | Techywarrior <techywarrior@gmail.com> | 2013-04-13 17:04:49 -0700 |
|---|---|---|
| committer | Techywarrior <techywarrior@gmail.com> | 2013-04-13 17:04:49 -0700 |
| commit | 419d85116798bd5e5327c41d711d6cb46d70caeb (patch) | |
| tree | b7b94ae285e70f97c09c3343be4763ac59229957 /MediaBrowser.Server.Implementations | |
| parent | 89ed33bbbcc3f47299a6104cbb1dd20ad3589510 (diff) | |
| parent | 7f1fdbf223f95dfc1435a8ff1b82fd635cc9b1d9 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations')
3 files changed, 50 insertions, 37 deletions
diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs index b1402eec7..4c7dd1da6 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs @@ -105,6 +105,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer DefaultRedirectPath = defaultRedirectpath; _logger = logger; + ServiceStack.Logging.LogManager.LogFactory = new NLogFactory(); + EndpointHostConfig.Instance.ServiceStackHandlerFactoryPath = null; EndpointHostConfig.Instance.MetadataRedirectPath = "metadata"; @@ -136,58 +138,56 @@ namespace MediaBrowser.Server.Implementations.HttpServer Plugins.Add(new SwaggerFeature()); Plugins.Add(new CorsFeature()); - ServiceStack.Logging.LogManager.LogFactory = new NLogFactory(); - ResponseFilters.Add((req, res, dto) => + { + var exception = dto as Exception; + + if (exception != null) { - var exception = dto as Exception; + _logger.ErrorException("Error processing request for {0}", exception, req.RawUrl); - if (exception != null) + if (!string.IsNullOrEmpty(exception.Message)) { - _logger.ErrorException("Error processing request for {0}", exception, req.RawUrl); - - if (!string.IsNullOrEmpty(exception.Message)) - { - var error = exception.Message.Replace(Environment.NewLine, " "); - error = RemoveControlCharacters(error); + var error = exception.Message.Replace(Environment.NewLine, " "); + error = RemoveControlCharacters(error); - res.AddHeader("X-Application-Error-Code", error); - } + res.AddHeader("X-Application-Error-Code", error); } + } - if (dto is CompressedResult) - { - // Per Google PageSpeed - // This instructs the proxies to cache two versions of the resource: one compressed, and one uncompressed. - // The correct version of the resource is delivered based on the client request header. - // This is a good choice for applications that are singly homed and depend on public proxies for user locality. - res.AddHeader("Vary", "Accept-Encoding"); - } + if (dto is CompressedResult) + { + // Per Google PageSpeed + // This instructs the proxies to cache two versions of the resource: one compressed, and one uncompressed. + // The correct version of the resource is delivered based on the client request header. + // This is a good choice for applications that are singly homed and depend on public proxies for user locality. + res.AddHeader("Vary", "Accept-Encoding"); + } - var hasOptions = dto as IHasOptions; + var hasOptions = dto as IHasOptions; - if (hasOptions != null) + if (hasOptions != null) + { + // Content length has to be explicitly set on on HttpListenerResponse or it won't be happy + string contentLength; + + if (hasOptions.Options.TryGetValue("Content-Length", out contentLength) && !string.IsNullOrEmpty(contentLength)) { - // Content length has to be explicitly set on on HttpListenerResponse or it won't be happy - string contentLength; + var length = long.Parse(contentLength, UsCulture); - if (hasOptions.Options.TryGetValue("Content-Length", out contentLength) && !string.IsNullOrEmpty(contentLength)) + if (length > 0) { - var length = long.Parse(contentLength, UsCulture); - - if (length > 0) - { - var response = (HttpListenerResponse) res.OriginalResponse; + var response = (HttpListenerResponse)res.OriginalResponse; - response.ContentLength64 = length; + response.ContentLength64 = length; - // Disable chunked encoding. Technically this is only needed when using Content-Range, but - // anytime we know the content length there's no need for it - response.SendChunked = false; - } + // Disable chunked encoding. Technically this is only needed when using Content-Range, but + // anytime we know the content length there's no need for it + response.SendChunked = false; } } - }); + } + }); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs index c33975a64..684b72cc9 100644 --- a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs +++ b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs @@ -39,6 +39,11 @@ namespace MediaBrowser.Server.Implementations.IO private readonly ConcurrentDictionary<string,string> _tempIgnoredPaths = new ConcurrentDictionary<string, string>(StringComparer.OrdinalIgnoreCase); /// <summary> + /// Any file name ending in any of these will be ignored by the watchers + /// </summary> + private readonly List<string> _alwaysIgnoreFiles = new List<string> {"thumbs.db","small.jpg","albumart.jpg"}; + + /// <summary> /// The timer lock /// </summary> private readonly object _timerLock = new object(); @@ -313,10 +318,18 @@ namespace MediaBrowser.Server.Implementations.IO /// <param name="e">The <see cref="FileSystemEventArgs" /> instance containing the event data.</param> void watcher_Changed(object sender, FileSystemEventArgs e) { + // Ignore when someone manually creates a new folder if (e.ChangeType == WatcherChangeTypes.Created && e.Name == "New folder") { return; } + + // Ignore certain files + if (_alwaysIgnoreFiles.Any(f => e.Name.EndsWith(f, StringComparison.OrdinalIgnoreCase))) + { + return; + } + if (_tempIgnoredPaths.ContainsKey(e.FullPath)) { Logger.Info("Watcher requested to ignore change to " + e.FullPath); diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 3bb5472df..ca261a393 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -696,7 +696,7 @@ namespace MediaBrowser.Server.Implementations.Library var tasks = new List<Task>(); - var includedPersonTypes = new[] { PersonType.Actor, PersonType.Director }; + var includedPersonTypes = new[] { PersonType.Actor, PersonType.Director, PersonType.GuestStar }; var people = RootFolder.RecursiveChildren .Where(c => c.People != null) |
