diff --git a/MediaBrowser.Controller/IO/FileSystem.cs b/MediaBrowser.Controller/IO/FileSystem.cs
index f31fc53de5..b08e8da274 100644
--- a/MediaBrowser.Controller/IO/FileSystem.cs
+++ b/MediaBrowser.Controller/IO/FileSystem.cs
@@ -30,27 +30,6 @@ namespace MediaBrowser.Controller.IO
}
}
- ///
- /// Gets the creation time UTC.
- ///
- /// The info.
- /// The logger.
- /// DateTime.
- public static DateTime GetCreationTimeUtc(FileSystemInfo info, ILogger logger)
- {
- // This could throw an error on some file systems that have dates out of range
-
- try
- {
- return info.CreationTimeUtc;
- }
- catch (Exception ex)
- {
- logger.ErrorException("Error determining CreationTimeUtc for {0}", ex, info.FullName);
- return DateTime.MinValue;
- }
- }
-
///
/// Copies all.
///
diff --git a/MediaBrowser.Controller/IO/IFileSystem.cs b/MediaBrowser.Controller/IO/IFileSystem.cs
index 2654c3235e..cbc5c7bf34 100644
--- a/MediaBrowser.Controller/IO/IFileSystem.cs
+++ b/MediaBrowser.Controller/IO/IFileSystem.cs
@@ -1,4 +1,5 @@
-using System.IO;
+using System;
+using System.IO;
namespace MediaBrowser.Controller.IO
{
@@ -41,5 +42,12 @@ namespace MediaBrowser.Controller.IO
/// The filename.
/// System.String.
string GetValidFilename(string filename);
+
+ ///
+ /// Gets the creation time UTC.
+ ///
+ /// The info.
+ /// DateTime.
+ DateTime GetCreationTimeUtc(FileSystemInfo info);
}
}
diff --git a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
index 7961834d67..5d61e5eb9c 100644
--- a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
+++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
@@ -146,7 +146,7 @@ namespace MediaBrowser.Controller.Resolvers
{
if (includeCreationTime)
{
- item.DateCreated = childData.CreationTimeUtc;
+ item.DateCreated = fileSystem.GetCreationTimeUtc(childData);
}
item.DateModified = childData.LastWriteTimeUtc;
@@ -159,7 +159,7 @@ namespace MediaBrowser.Controller.Resolvers
{
if (includeCreationTime)
{
- item.DateCreated = fileData.CreationTimeUtc;
+ item.DateCreated = fileSystem.GetCreationTimeUtc(fileData);
}
item.DateModified = fileData.LastWriteTimeUtc;
}
@@ -169,7 +169,7 @@ namespace MediaBrowser.Controller.Resolvers
{
if (includeCreationTime)
{
- item.DateCreated = args.FileInfo.CreationTimeUtc;
+ item.DateCreated = fileSystem.GetCreationTimeUtc(args.FileInfo);
}
item.DateModified = args.FileInfo.LastWriteTimeUtc;
}
diff --git a/MediaBrowser.Providers/ImagesByNameProvider.cs b/MediaBrowser.Providers/ImagesByNameProvider.cs
index 2fdfe199ab..8c5b3635d1 100644
--- a/MediaBrowser.Providers/ImagesByNameProvider.cs
+++ b/MediaBrowser.Providers/ImagesByNameProvider.cs
@@ -114,7 +114,7 @@ namespace MediaBrowser.Providers
return files.Select(f =>
{
var lastWriteTime = FileSystem.GetLastWriteTimeUtc(f, Logger);
- var creationTime = FileSystem.GetCreationTimeUtc(f, Logger);
+ var creationTime = _fileSystem.GetCreationTimeUtc(f);
return creationTime > lastWriteTime ? creationTime : lastWriteTime;
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index eed191aab2..0c5d55a3b7 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -771,7 +771,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
Name = name,
Id = id,
- DateCreated = fileInfo.CreationTimeUtc,
+ DateCreated = _fileSystem.GetCreationTimeUtc(fileInfo),
DateModified = fileInfo.LastWriteTimeUtc,
Path = path
};
diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs
index 4aac1bb919..196d065805 100644
--- a/MediaBrowser.ServerApplication/ApplicationHost.cs
+++ b/MediaBrowser.ServerApplication/ApplicationHost.cs
@@ -249,7 +249,7 @@ namespace MediaBrowser.ServerApplication
RegisterSingleInstance(() => new BdInfoExaminer());
- FileSystemManager = FileSystemFactory.CreateFileSystemManager();
+ FileSystemManager = FileSystemFactory.CreateFileSystemManager(LogManager);
RegisterSingleInstance(FileSystemManager);
var mediaEncoderTask = RegisterMediaEncoder();
diff --git a/MediaBrowser.ServerApplication/IO/CommonFileSystem.cs b/MediaBrowser.ServerApplication/IO/CommonFileSystem.cs
index b777930f3a..dee9bd9d77 100644
--- a/MediaBrowser.ServerApplication/IO/CommonFileSystem.cs
+++ b/MediaBrowser.ServerApplication/IO/CommonFileSystem.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.IO;
+using MediaBrowser.Model.Logging;
using System;
using System.IO;
using System.Text;
@@ -10,6 +11,13 @@ namespace MediaBrowser.ServerApplication.IO
///
public class CommonFileSystem : IFileSystem
{
+ protected ILogger Logger;
+
+ public CommonFileSystem(ILogger logger)
+ {
+ Logger = logger;
+ }
+
///
/// Determines whether the specified filename is shortcut.
///
@@ -137,6 +145,25 @@ namespace MediaBrowser.ServerApplication.IO
return builder.ToString();
}
+
+ ///
+ /// Gets the creation time UTC.
+ ///
+ /// The info.
+ /// DateTime.
+ public DateTime GetCreationTimeUtc(FileSystemInfo info)
+ {
+ // This could throw an error on some file systems that have dates out of range
+ try
+ {
+ return info.CreationTimeUtc;
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error determining CreationTimeUtc for {0}", ex, info.FullName);
+ return DateTime.MinValue;
+ }
+ }
}
diff --git a/MediaBrowser.ServerApplication/IO/FileSystemFactory.cs b/MediaBrowser.ServerApplication/IO/FileSystemFactory.cs
index 78a9338a4a..ab7802e17d 100644
--- a/MediaBrowser.ServerApplication/IO/FileSystemFactory.cs
+++ b/MediaBrowser.ServerApplication/IO/FileSystemFactory.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.IO;
+using MediaBrowser.Model.Logging;
namespace MediaBrowser.ServerApplication.IO
{
@@ -11,9 +12,9 @@ namespace MediaBrowser.ServerApplication.IO
/// Creates the file system manager.
///
/// IFileSystem.
- public static IFileSystem CreateFileSystemManager()
+ public static IFileSystem CreateFileSystemManager(ILogManager logManager)
{
- return new NativeFileSystem();
+ return new NativeFileSystem(logManager.GetLogger("FileSystem"));
}
}
}
diff --git a/MediaBrowser.ServerApplication/IO/NativeFileSystem.cs b/MediaBrowser.ServerApplication/IO/NativeFileSystem.cs
index b5ceec6196..0101b42498 100644
--- a/MediaBrowser.ServerApplication/IO/NativeFileSystem.cs
+++ b/MediaBrowser.ServerApplication/IO/NativeFileSystem.cs
@@ -1,4 +1,5 @@
-using System;
+using MediaBrowser.Model.Logging;
+using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Security;
@@ -8,6 +9,11 @@ namespace MediaBrowser.ServerApplication.IO
{
public class NativeFileSystem : CommonFileSystem
{
+ public NativeFileSystem(ILogger logger)
+ : base(logger)
+ {
+ }
+
public override bool IsShortcut(string filename)
{
return base.IsShortcut(filename) ||