Sfoglia il codice sorgente

use IFileSystem interface to get creation time

Luke Pulverenti 11 anni fa
parent
commit
579b507f7f

+ 0 - 21
MediaBrowser.Controller/IO/FileSystem.cs

@@ -30,27 +30,6 @@ namespace MediaBrowser.Controller.IO
             }
         }
 
-        /// <summary>
-        /// Gets the creation time UTC.
-        /// </summary>
-        /// <param name="info">The info.</param>
-        /// <param name="logger">The logger.</param>
-        /// <returns>DateTime.</returns>
-        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;
-            }
-        }
-
         /// <summary>
         /// Copies all.
         /// </summary>

+ 9 - 1
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
         /// <param name="filename">The filename.</param>
         /// <returns>System.String.</returns>
         string GetValidFilename(string filename);
+
+        /// <summary>
+        /// Gets the creation time UTC.
+        /// </summary>
+        /// <param name="info">The info.</param>
+        /// <returns>DateTime.</returns>
+        DateTime GetCreationTimeUtc(FileSystemInfo info);
     }
 }

+ 3 - 3
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;
             }

+ 1 - 1
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;
 

+ 1 - 1
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
                 };

+ 1 - 1
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -249,7 +249,7 @@ namespace MediaBrowser.ServerApplication
 
             RegisterSingleInstance<IBlurayExaminer>(() => new BdInfoExaminer());
 
-            FileSystemManager = FileSystemFactory.CreateFileSystemManager();
+            FileSystemManager = FileSystemFactory.CreateFileSystemManager(LogManager);
             RegisterSingleInstance(FileSystemManager);
 
             var mediaEncoderTask = RegisterMediaEncoder();

+ 27 - 0
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
     /// </summary>
     public class CommonFileSystem : IFileSystem
     {
+        protected ILogger Logger;
+
+        public CommonFileSystem(ILogger logger)
+        {
+            Logger = logger;
+        }
+
         /// <summary>
         /// Determines whether the specified filename is shortcut.
         /// </summary>
@@ -137,6 +145,25 @@ namespace MediaBrowser.ServerApplication.IO
 
             return builder.ToString();
         }
+
+        /// <summary>
+        /// Gets the creation time UTC.
+        /// </summary>
+        /// <param name="info">The info.</param>
+        /// <returns>DateTime.</returns>
+        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;
+            }
+        }
     }
 
 

+ 3 - 2
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.
         /// </summary>
         /// <returns>IFileSystem.</returns>
-        public static IFileSystem CreateFileSystemManager()
+        public static IFileSystem CreateFileSystemManager(ILogManager logManager)
         {
-            return new NativeFileSystem();
+            return new NativeFileSystem(logManager.GetLogger("FileSystem"));
         }
     }
 }

+ 7 - 1
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) ||