aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-10-03 23:38:46 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-10-03 23:38:46 -0400
commit8ad702060ea31a3862598056509a2597f6a2b639 (patch)
tree0ff47fe50567456746ebe028599f6dd54b52f6ab
parent64c1628160d31482d6b74fd82a6dfd0c9cf5de96 (diff)
begin file system rework
-rw-r--r--MediaBrowser.Api/Playback/Dash/MpegDashService.cs4
-rw-r--r--MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs4
-rw-r--r--MediaBrowser.Api/System/SystemService.cs4
-rw-r--r--MediaBrowser.Common.Implementations/IO/CommonFileSystem.cs134
-rw-r--r--MediaBrowser.Common/IO/FileSystemMetadata.cs32
-rw-r--r--MediaBrowser.Common/IO/IFileSystem.cs145
-rw-r--r--MediaBrowser.Common/MediaBrowser.Common.csproj1
-rw-r--r--MediaBrowser.Controller/Entities/AggregateFolder.cs7
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs37
-rw-r--r--MediaBrowser.Controller/Entities/CollectionFolder.cs7
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs5
-rw-r--r--MediaBrowser.Controller/Entities/IHasImages.cs9
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs5
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs3
-rw-r--r--MediaBrowser.Controller/IO/FileData.cs6
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs19
-rw-r--r--MediaBrowser.Controller/Library/ItemResolveArgs.cs15
-rw-r--r--MediaBrowser.Controller/Providers/DirectoryService.cs28
-rw-r--r--MediaBrowser.Controller/Providers/IDirectoryService.cs13
-rw-r--r--MediaBrowser.Controller/Providers/LocalImageInfo.cs3
-rw-r--r--MediaBrowser.Controller/Resolvers/IItemResolver.cs9
-rw-r--r--MediaBrowser.LocalMetadata/BaseXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs4
-rw-r--r--MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs26
-rw-r--r--MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs7
-rw-r--r--MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs4
-rw-r--r--MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs4
-rw-r--r--MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs6
-rw-r--r--MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs15
-rw-r--r--MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs2
-rw-r--r--MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs2
-rw-r--r--MediaBrowser.Model/Devices/DeviceInfo.cs5
-rw-r--r--MediaBrowser.Providers/ImagesByName/ImageUtils.cs2
-rw-r--r--MediaBrowser.Providers/Manager/ImageSaver.cs2
-rw-r--r--MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs2
-rw-r--r--MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs2
-rw-r--r--MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs2
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbProvider.cs2
-rw-r--r--MediaBrowser.Providers/Movies/MovieUpdatesPrescanTask.cs2
-rw-r--r--MediaBrowser.Providers/Music/FanArtAlbumProvider.cs2
-rw-r--r--MediaBrowser.Providers/Music/FanArtArtistProvider.cs2
-rw-r--r--MediaBrowser.Providers/Music/FanArtUpdatesPostScanTask.cs2
-rw-r--r--MediaBrowser.Providers/TV/FanArtSeasonProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs2
-rw-r--r--MediaBrowser.Providers/TV/FanartSeriesProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/MovieDbSeriesProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs10
-rw-r--r--MediaBrowser.Providers/TV/TvdbPrescanTask.cs2
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs11
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs2
-rw-r--r--MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs17
-rw-r--r--MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs5
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs66
-rw-r--r--MediaBrowser.Server.Implementations/Library/ResolverHelper.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs19
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs2
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs2
-rw-r--r--MediaBrowser.Server.Startup.Common/ApplicationHost.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs14
77 files changed, 505 insertions, 282 deletions
diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs
index cbee821d2..5a36b0aa2 100644
--- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs
+++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs
@@ -322,7 +322,7 @@ namespace MediaBrowser.Api.Playback.Dash
}
}
- private static List<FileInfo> GetLastTranscodingFiles(string playlist, string segmentExtension, IFileSystem fileSystem, int count)
+ private static List<FileSystemMetadata> GetLastTranscodingFiles(string playlist, string segmentExtension, IFileSystem fileSystem, int count)
{
var folder = Path.GetDirectoryName(playlist);
@@ -336,7 +336,7 @@ namespace MediaBrowser.Api.Playback.Dash
}
catch (DirectoryNotFoundException)
{
- return new List<FileInfo>();
+ return new List<FileSystemMetadata>();
}
}
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index cb49e65c7..39bdee699 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -354,7 +354,7 @@ namespace MediaBrowser.Api.Playback.Hls
}
}
- private void DeleteFile(FileInfo file, int retryCount)
+ private void DeleteFile(FileSystemMetadata file, int retryCount)
{
if (retryCount >= 5)
{
@@ -378,7 +378,7 @@ namespace MediaBrowser.Api.Playback.Hls
}
}
- private static FileInfo GetLastTranscodingFile(string playlist, string segmentExtension, IFileSystem fileSystem)
+ private static FileSystemMetadata GetLastTranscodingFile(string playlist, string segmentExtension, IFileSystem fileSystem)
{
var folder = Path.GetDirectoryName(playlist);
diff --git a/MediaBrowser.Api/System/SystemService.cs b/MediaBrowser.Api/System/SystemService.cs
index 00935dd1e..4ad8b3903 100644
--- a/MediaBrowser.Api/System/SystemService.cs
+++ b/MediaBrowser.Api/System/SystemService.cs
@@ -118,7 +118,7 @@ namespace MediaBrowser.Api.System
public object Get(GetServerLogs request)
{
- List<FileInfo> files;
+ List<FileSystemMetadata> files;
try
{
@@ -128,7 +128,7 @@ namespace MediaBrowser.Api.System
}
catch (DirectoryNotFoundException)
{
- files = new List<FileInfo>();
+ files = new List<FileSystemMetadata>();
}
var result = files.Select(i => new LogFile
diff --git a/MediaBrowser.Common.Implementations/IO/CommonFileSystem.cs b/MediaBrowser.Common.Implementations/IO/CommonFileSystem.cs
index b899e88c2..f13b9b1a9 100644
--- a/MediaBrowser.Common.Implementations/IO/CommonFileSystem.cs
+++ b/MediaBrowser.Common.Implementations/IO/CommonFileSystem.cs
@@ -27,7 +27,7 @@ namespace MediaBrowser.Common.Implementations.IO
SetInvalidFileNameChars(usePresetInvalidFileNameChars);
}
- private void SetInvalidFileNameChars(bool usePresetInvalidFileNameChars)
+ protected void SetInvalidFileNameChars(bool usePresetInvalidFileNameChars)
{
// GetInvalidFileNameChars is less restrictive in Linux/Mac than Windows, this mimic Windows behavior for mono under Linux/Mac.
@@ -115,7 +115,7 @@ namespace MediaBrowser.Common.Implementations.IO
/// </summary>
/// <param name="path">The path.</param>
/// <returns>FileSystemInfo.</returns>
- public FileSystemInfo GetFileSystemInfo(string path)
+ public FileSystemMetadata GetFileSystemInfo(string path)
{
if (string.IsNullOrEmpty(path))
{
@@ -129,10 +129,10 @@ namespace MediaBrowser.Common.Implementations.IO
if (fileInfo.Exists)
{
- return fileInfo;
+ return GetFileSystemMetadata(fileInfo);
}
- return new DirectoryInfo(path);
+ return GetFileSystemMetadata(new DirectoryInfo(path));
}
else
{
@@ -140,13 +140,63 @@ namespace MediaBrowser.Common.Implementations.IO
if (fileInfo.Exists)
{
- return fileInfo;
+ return GetFileSystemMetadata(fileInfo);
}
- return new FileInfo(path);
+ return GetFileSystemMetadata(new FileInfo(path));
}
}
+ public FileSystemMetadata GetFileInfo(string path)
+ {
+ if (string.IsNullOrEmpty(path))
+ {
+ throw new ArgumentNullException("path");
+ }
+
+ var fileInfo = new FileInfo(path);
+
+ return GetFileSystemMetadata(fileInfo);
+ }
+
+ public FileSystemMetadata GetDirectoryInfo(string path)
+ {
+ if (string.IsNullOrEmpty(path))
+ {
+ throw new ArgumentNullException("path");
+ }
+
+ var fileInfo = new DirectoryInfo(path);
+
+ return GetFileSystemMetadata(fileInfo);
+ }
+
+ private FileSystemMetadata GetFileSystemMetadata(FileSystemInfo info)
+ {
+ var result = new FileSystemMetadata();
+
+ result.Attributes = info.Attributes;
+ result.Exists = info.Exists;
+ result.FullName = info.FullName;
+ result.Extension = info.Extension;
+ result.Name = info.Name;
+
+ if (result.Exists)
+ {
+ var fileInfo = info as FileInfo;
+ if (fileInfo != null)
+ {
+ result.Length = fileInfo.Length;
+ result.DirectoryName = fileInfo.DirectoryName;
+ }
+
+ result.CreationTimeUtc = GetCreationTimeUtc(info);
+ result.LastWriteTimeUtc = GetLastWriteTimeUtc(info);
+ }
+
+ return result;
+ }
+
/// <summary>
/// The space char
/// </summary>
@@ -197,6 +247,26 @@ namespace MediaBrowser.Common.Implementations.IO
/// <summary>
/// Gets the creation time UTC.
/// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>DateTime.</returns>
+ public DateTime GetCreationTimeUtc(string path)
+ {
+ return GetCreationTimeUtc(GetFileSystemInfo(path));
+ }
+
+ public DateTime GetCreationTimeUtc(FileSystemMetadata info)
+ {
+ return info.CreationTimeUtc;
+ }
+
+ public DateTime GetLastWriteTimeUtc(FileSystemMetadata info)
+ {
+ return info.LastWriteTimeUtc;
+ }
+
+ /// <summary>
+ /// Gets the creation time UTC.
+ /// </summary>
/// <param name="info">The info.</param>
/// <returns>DateTime.</returns>
public DateTime GetLastWriteTimeUtc(FileSystemInfo info)
@@ -346,41 +416,9 @@ namespace MediaBrowser.Common.Implementations.IO
return path.TrimEnd(Path.DirectorySeparatorChar);
}
- public string SubstitutePath(string path, string from, string to)
+ public string GetFileNameWithoutExtension(FileSystemMetadata info)
{
- if (string.IsNullOrWhiteSpace(path))
- {
- throw new ArgumentNullException("path");
- }
- if (string.IsNullOrWhiteSpace(from))
- {
- throw new ArgumentNullException("from");
- }
- if (string.IsNullOrWhiteSpace(to))
- {
- throw new ArgumentNullException("to");
- }
-
- var newPath = path.Replace(from, to, StringComparison.OrdinalIgnoreCase);
-
- if (!string.Equals(newPath, path))
- {
- if (to.IndexOf('/') != -1)
- {
- newPath = newPath.Replace('\\', '/');
- }
- else
- {
- newPath = newPath.Replace('/', '\\');
- }
- }
-
- return newPath;
- }
-
- public string GetFileNameWithoutExtension(FileSystemInfo info)
- {
- if (info is DirectoryInfo)
+ if (info.IsDirectory)
{
return info.Name;
}
@@ -426,28 +464,28 @@ namespace MediaBrowser.Common.Implementations.IO
{
Directory.CreateDirectory(path);
}
-
- public IEnumerable<DirectoryInfo> GetDirectories(string path, bool recursive = false)
+
+ public IEnumerable<FileSystemMetadata> GetDirectories(string path, bool recursive = false)
{
var searchOption = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
- return new DirectoryInfo (path).EnumerateDirectories("*", searchOption);
+ return new DirectoryInfo(path).EnumerateDirectories("*", searchOption).Select(GetFileSystemMetadata);
}
- public IEnumerable<FileInfo> GetFiles(string path, bool recursive = false)
+ public IEnumerable<FileSystemMetadata> GetFiles(string path, bool recursive = false)
{
var searchOption = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
- return new DirectoryInfo (path).EnumerateFiles("*", searchOption);
+ return new DirectoryInfo (path).EnumerateFiles("*", searchOption).Select(GetFileSystemMetadata);
}
- public IEnumerable<FileSystemInfo> GetFileSystemEntries(string path, bool recursive = false)
+ public IEnumerable<FileSystemMetadata> GetFileSystemEntries(string path, bool recursive = false)
{
var directoryInfo = new DirectoryInfo (path);
var searchOption = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
- return directoryInfo.EnumerateDirectories("*", searchOption)
- .Concat<FileSystemInfo>(directoryInfo.EnumerateFiles("*", searchOption));
+ return directoryInfo.EnumerateDirectories("*", searchOption).Select(GetFileSystemMetadata)
+ .Concat(directoryInfo.EnumerateFiles("*", searchOption).Select(GetFileSystemMetadata));
}
public Stream OpenRead(string path)
diff --git a/MediaBrowser.Common/IO/FileSystemMetadata.cs b/MediaBrowser.Common/IO/FileSystemMetadata.cs
new file mode 100644
index 000000000..ba8a1b8b8
--- /dev/null
+++ b/MediaBrowser.Common/IO/FileSystemMetadata.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Common.IO
+{
+ public class FileSystemMetadata
+ {
+ public FileAttributes Attributes { get; set; }
+
+ public bool Exists { get; set; }
+ public string FullName { get; set; }
+ public string Name { get; set; }
+ public string Extension { get; set; }
+ public long Length { get; set; }
+ public string DirectoryName { get; set; }
+
+ public DateTime LastWriteTimeUtc { get; set; }
+ public DateTime CreationTimeUtc { get; set; }
+
+ public bool IsDirectory
+ {
+ get
+ {
+ return (Attributes & FileAttributes.Directory) == FileAttributes.Directory;
+ }
+ }
+ }
+}
diff --git a/MediaBrowser.Common/IO/IFileSystem.cs b/MediaBrowser.Common/IO/IFileSystem.cs
index ce15ad999..e084f94ed 100644
--- a/MediaBrowser.Common/IO/IFileSystem.cs
+++ b/MediaBrowser.Common/IO/IFileSystem.cs
@@ -36,9 +36,23 @@ namespace MediaBrowser.Common.IO
/// </summary>
/// <param name="path">The path.</param>
/// <returns>FileSystemInfo.</returns>
- FileSystemInfo GetFileSystemInfo(string path);
+ FileSystemMetadata GetFileSystemInfo(string path);
/// <summary>
+ /// Gets the file information.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>FileSystemMetadata.</returns>
+ FileSystemMetadata GetFileInfo(string path);
+
+ /// <summary>
+ /// Gets the directory information.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>FileSystemMetadata.</returns>
+ FileSystemMetadata GetDirectoryInfo(string path);
+
+ /// <summary>
/// Gets the valid filename.
/// </summary>
/// <param name="filename">The filename.</param>
@@ -48,17 +62,24 @@ namespace MediaBrowser.Common.IO
/// <summary>
/// Gets the creation time UTC.
/// </summary>
- /// <param name="info">The info.</param>
+ /// <param name="info">The information.</param>
+ /// <returns>DateTime.</returns>
+ DateTime GetCreationTimeUtc(FileSystemMetadata info);
+
+ /// <summary>
+ /// Gets the creation time UTC.
+ /// </summary>
+ /// <param name="path">The path.</param>
/// <returns>DateTime.</returns>
- DateTime GetCreationTimeUtc(FileSystemInfo info);
+ DateTime GetCreationTimeUtc(string path);
/// <summary>
/// Gets the last write time UTC.
/// </summary>
/// <param name="info">The information.</param>
/// <returns>DateTime.</returns>
- DateTime GetLastWriteTimeUtc(FileSystemInfo info);
-
+ DateTime GetLastWriteTimeUtc(FileSystemMetadata info);
+
/// <summary>
/// Gets the last write time UTC.
/// </summary>
@@ -77,6 +98,11 @@ namespace MediaBrowser.Common.IO
/// <returns>FileStream.</returns>
Stream GetFileStream(string path, FileMode mode, FileAccess access, FileShare share, bool isAsync = false);
+ /// <summary>
+ /// Opens the read.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>Stream.</returns>
Stream OpenRead(String path);
/// <summary>
@@ -109,20 +135,11 @@ namespace MediaBrowser.Common.IO
string NormalizePath(string path);
/// <summary>
- /// Substitutes the path.
- /// </summary>
- /// <param name="path">The path.</param>
- /// <param name="from">From.</param>
- /// <param name="to">To.</param>
- /// <returns>System.String.</returns>
- string SubstitutePath(string path, string from, string to);
-
- /// <summary>
/// Gets the file name without extension.
/// </summary>
/// <param name="info">The information.</param>
/// <returns>System.String.</returns>
- string GetFileNameWithoutExtension(FileSystemInfo info);
+ string GetFileNameWithoutExtension(FileSystemMetadata info);
/// <summary>
/// Gets the file name without extension.
@@ -150,37 +167,125 @@ namespace MediaBrowser.Common.IO
/// <param name="path">The path.</param>
/// <param name="recursive">if set to <c>true</c> [recursive].</param>
void DeleteDirectory(string path, bool recursive);
-
- IEnumerable<DirectoryInfo> GetDirectories(string path, bool recursive = false);
- IEnumerable<FileInfo> GetFiles(string path, bool recursive = false);
+ /// <summary>
+ /// Gets the directories.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="recursive">if set to <c>true</c> [recursive].</param>
+ /// <returns>IEnumerable&lt;DirectoryInfo&gt;.</returns>
+ IEnumerable<FileSystemMetadata> GetDirectories(string path, bool recursive = false);
- IEnumerable<FileSystemInfo> GetFileSystemEntries(string path, bool recursive = false);
+ /// <summary>
+ /// Gets the files.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="recursive">if set to <c>true</c> [recursive].</param>
+ /// <returns>IEnumerable&lt;FileInfo&gt;.</returns>
+ IEnumerable<FileSystemMetadata> GetFiles(string path, bool recursive = false);
+
+ /// <summary>
+ /// Gets the file system entries.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="recursive">if set to <c>true</c> [recursive].</param>
+ /// <returns>IEnumerable&lt;FileSystemMetadata&gt;.</returns>
+ IEnumerable<FileSystemMetadata> GetFileSystemEntries(string path, bool recursive = false);
+ /// <summary>
+ /// Creates the directory.
+ /// </summary>
+ /// <param name="path">The path.</param>
void CreateDirectory(string path);
+ /// <summary>
+ /// Copies the file.
+ /// </summary>
+ /// <param name="source">The source.</param>
+ /// <param name="target">The target.</param>
+ /// <param name="overwrite">if set to <c>true</c> [overwrite].</param>
void CopyFile(string source, string target, bool overwrite);
+ /// <summary>
+ /// Moves the file.
+ /// </summary>
+ /// <param name="source">The source.</param>
+ /// <param name="target">The target.</param>
void MoveFile(string source, string target);
+ /// <summary>
+ /// Moves the directory.
+ /// </summary>
+ /// <param name="source">The source.</param>
+ /// <param name="target">The target.</param>
void MoveDirectory(string source, string target);
+ /// <summary>
+ /// Directories the exists.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
bool DirectoryExists(string path);
+ /// <summary>
+ /// Files the exists.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
bool FileExists(string path);
+ /// <summary>
+ /// Reads all text.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>System.String.</returns>
string ReadAllText(string path);
+ /// <summary>
+ /// Writes all text.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="text">The text.</param>
void WriteAllText(string path, string text);
-
+
+ /// <summary>
+ /// Writes all text.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="text">The text.</param>
+ /// <param name="encoding">The encoding.</param>
void WriteAllText(string path, string text, Encoding encoding);
+ /// <summary>
+ /// Reads all text.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="encoding">The encoding.</param>
+ /// <returns>System.String.</returns>
string ReadAllText(string path, Encoding encoding);
+ /// <summary>
+ /// Gets the directory paths.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="recursive">if set to <c>true</c> [recursive].</param>
+ /// <returns>IEnumerable&lt;System.String&gt;.</returns>
IEnumerable<string> GetDirectoryPaths(string path, bool recursive = false);
+ /// <summary>
+ /// Gets the file paths.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="recursive">if set to <c>true</c> [recursive].</param>
+ /// <returns>IEnumerable&lt;System.String&gt;.</returns>
IEnumerable<string> GetFilePaths(string path, bool recursive = false);
+ /// <summary>
+ /// Gets the file system entry paths.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="recursive">if set to <c>true</c> [recursive].</param>
+ /// <returns>IEnumerable&lt;System.String&gt;.</returns>
IEnumerable<string> GetFileSystemEntryPaths(string path, bool recursive = false);
}
}
diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj
index ad0c0cecd..0476f3f60 100644
--- a/MediaBrowser.Common/MediaBrowser.Common.csproj
+++ b/MediaBrowser.Common/MediaBrowser.Common.csproj
@@ -60,6 +60,7 @@
<Compile Include="Extensions\BaseExtensions.cs" />
<Compile Include="Extensions\ResourceNotFoundException.cs" />
<Compile Include="IDependencyContainer.cs" />
+ <Compile Include="IO\FileSystemMetadata.cs" />
<Compile Include="IO\IFileSystem.cs" />
<Compile Include="IO\ProgressStream.cs" />
<Compile Include="IO\StreamDefaults.cs" />
diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs
index 66a0d551b..5af02e9bb 100644
--- a/MediaBrowser.Controller/Entities/AggregateFolder.cs
+++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
+using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Providers;
namespace MediaBrowser.Controller.Entities
@@ -62,7 +63,7 @@ namespace MediaBrowser.Controller.Entities
public List<string> PhysicalLocationsList { get; set; }
- protected override IEnumerable<FileSystemInfo> GetFileSystemChildren(IDirectoryService directoryService)
+ protected override IEnumerable<FileSystemMetadata> GetFileSystemChildren(IDirectoryService directoryService)
{
return CreateResolveArgs(directoryService).FileSystemChildren;
}
@@ -73,7 +74,7 @@ namespace MediaBrowser.Controller.Entities
var args = new ItemResolveArgs(ConfigurationManager.ApplicationPaths , directoryService)
{
- FileInfo = new DirectoryInfo(path),
+ FileInfo = FileSystem.GetDirectoryInfo(path),
Path = path,
Parent = Parent
};
@@ -94,7 +95,7 @@ namespace MediaBrowser.Controller.Entities
{
var paths = LibraryManager.NormalizeRootPathList(fileSystemDictionary.Keys);
- fileSystemDictionary = paths.Select(i => (FileSystemInfo)new DirectoryInfo(i)).ToDictionary(i => i.FullName);
+ fileSystemDictionary = paths.Select(FileSystem.GetDirectoryInfo).ToDictionary(i => i.FullName);
}
args.FileSystemDictionary = fileSystemDictionary;
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 5403c16dd..963f4725a 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -676,7 +676,7 @@ namespace MediaBrowser.Controller.Entities
/// Loads the theme songs.
/// </summary>
/// <returns>List{Audio.Audio}.</returns>
- private IEnumerable<Audio.Audio> LoadThemeSongs(List<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
+ private IEnumerable<Audio.Audio> LoadThemeSongs(List<FileSystemMetadata> fileSystemChildren, IDirectoryService directoryService)
{
var files = fileSystemChildren.OfType<DirectoryInfo>()
.Where(i => string.Equals(i.Name, ThemeSongsFolderName, StringComparison.OrdinalIgnoreCase))
@@ -684,8 +684,8 @@ namespace MediaBrowser.Controller.Entities
.ToList();
// Support plex/xbmc convention
- files.AddRange(fileSystemChildren.OfType<FileInfo>()
- .Where(i => string.Equals(FileSystem.GetFileNameWithoutExtension(i), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
+ files.AddRange(fileSystemChildren
+ .Where(i => !i.IsDirectory && string.Equals(FileSystem.GetFileNameWithoutExtension(i), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
);
return LibraryManager.ResolvePaths(files, directoryService, null)
@@ -712,7 +712,7 @@ namespace MediaBrowser.Controller.Entities
/// Loads the video backdrops.
/// </summary>
/// <returns>List{Video}.</returns>
- private IEnumerable<Video> LoadThemeVideos(IEnumerable<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
+ private IEnumerable<Video> LoadThemeVideos(IEnumerable<FileSystemMetadata> fileSystemChildren, IDirectoryService directoryService)
{
var files = fileSystemChildren.OfType<DirectoryInfo>()
.Where(i => string.Equals(i.Name, ThemeVideosFolderName, StringComparison.OrdinalIgnoreCase))
@@ -761,7 +761,7 @@ namespace MediaBrowser.Controller.Entities
{
var files = locationType != LocationType.Remote && locationType != LocationType.Virtual ?
GetFileSystemChildren(options.DirectoryService).ToList() :
- new List<FileSystemInfo>();
+ new List<FileSystemMetadata>();
var ownedItemsChanged = await RefreshedOwnedItems(options, files, cancellationToken).ConfigureAwait(false);
@@ -808,7 +808,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="fileSystemChildren"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
- protected virtual async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ protected virtual async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var themeSongsChanged = false;
@@ -839,14 +839,14 @@ namespace MediaBrowser.Controller.Entities
return themeSongsChanged || themeVideosChanged || localTrailersChanged;
}
- protected virtual IEnumerable<FileSystemInfo> GetFileSystemChildren(IDirectoryService directoryService)
+ protected virtual IEnumerable<FileSystemMetadata> GetFileSystemChildren(IDirectoryService directoryService)
{
var path = ContainingFolderPath;
return directoryService.GetFileSystemEntries(path);
}
- private async Task<bool> RefreshLocalTrailers(IHasTrailers item, MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ private async Task<bool> RefreshLocalTrailers(IHasTrailers item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var newItems = LibraryManager.FindTrailers(this, fileSystemChildren, options.DirectoryService).ToList();
@@ -863,7 +863,7 @@ namespace MediaBrowser.Controller.Entities
return itemsChanged;
}
- private async Task<bool> RefreshThemeVideos(IHasThemeMedia item, MetadataRefreshOptions options, IEnumerable<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ private async Task<bool> RefreshThemeVideos(IHasThemeMedia item, MetadataRefreshOptions options, IEnumerable<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var newThemeVideos = LoadThemeVideos(fileSystemChildren, options.DirectoryService).ToList();
@@ -894,7 +894,7 @@ namespace MediaBrowser.Controller.Entities
/// <summary>
/// Refreshes the theme songs.
/// </summary>
- private async Task<bool> RefreshThemeSongs(IHasThemeMedia item, MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ private async Task<bool> RefreshThemeSongs(IHasThemeMedia item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var newThemeSongs = LoadThemeSongs(fileSystemChildren, options.DirectoryService).ToList();
var newThemeSongIds = newThemeSongs.Select(i => i.Id).ToList();
@@ -1395,7 +1395,7 @@ namespace MediaBrowser.Controller.Entities
return GetImageInfo(type, imageIndex) != null;
}
- public void SetImagePath(ImageType type, int index, FileSystemInfo file)
+ public void SetImagePath(ImageType type, int index, FileSystemMetadata file)
{
if (type == ImageType.Chapter)
{
@@ -1545,11 +1545,6 @@ namespace MediaBrowser.Controller.Entities
return ImageInfos.Where(i => i.Type == imageType);
}
- public bool AddImages(ImageType imageType, IEnumerable<FileInfo> images)
- {
- return AddImages(imageType, images.Cast<FileSystemInfo>().ToList());
- }
-
/// <summary>
/// Adds the images.
/// </summary>
@@ -1557,7 +1552,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="images">The images.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
/// <exception cref="System.ArgumentException">Cannot call AddImages with chapter images</exception>
- public bool AddImages(ImageType imageType, List<FileSystemInfo> images)
+ public bool AddImages(ImageType imageType, List<FileSystemMetadata> images)
{
if (imageType == ImageType.Chapter)
{
@@ -1567,7 +1562,7 @@ namespace MediaBrowser.Controller.Entities
var existingImages = GetImages(imageType)
.ToList();
- var newImageList = new List<FileSystemInfo>();
+ var newImageList = new List<FileSystemMetadata>();
var imageAdded = false;
foreach (var newImage in images)
@@ -1607,7 +1602,7 @@ namespace MediaBrowser.Controller.Entities
return newImageList.Count > 0;
}
- private ItemImageInfo GetImageInfo(FileSystemInfo file, ImageType type)
+ private ItemImageInfo GetImageInfo(FileSystemMetadata file, ImageType type)
{
return new ItemImageInfo
{
@@ -1730,7 +1725,7 @@ namespace MediaBrowser.Controller.Entities
{
foreach (var map in ConfigurationManager.Configuration.PathSubstitutions)
{
- path = FileSystem.SubstitutePath(path, map.From, map.To);
+ path = LibraryManager.SubstitutePath(path, map.From, map.To);
}
}
@@ -1771,7 +1766,7 @@ namespace MediaBrowser.Controller.Entities
if (video == null)
{
- video = LibraryManager.ResolvePath(new FileInfo(path)) as Video;
+ video = LibraryManager.ResolvePath(FileSystem.GetFileSystemInfo(path)) as Video;
newOptions.ForceSave = true;
}
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs
index 8821f35c8..b299929d0 100644
--- a/MediaBrowser.Controller/Entities/CollectionFolder.cs
+++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs
@@ -8,6 +8,7 @@ using System.Linq;
using System.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Entities
{
@@ -80,7 +81,7 @@ namespace MediaBrowser.Controller.Entities
public List<string> PhysicalLocationsList { get; set; }
- protected override IEnumerable<FileSystemInfo> GetFileSystemChildren(IDirectoryService directoryService)
+ protected override IEnumerable<FileSystemMetadata> GetFileSystemChildren(IDirectoryService directoryService)
{
return CreateResolveArgs(directoryService).FileSystemChildren;
}
@@ -107,7 +108,7 @@ namespace MediaBrowser.Controller.Entities
var args = new ItemResolveArgs(ConfigurationManager.ApplicationPaths, directoryService)
{
- FileInfo = new DirectoryInfo(path),
+ FileInfo = FileSystem.GetDirectoryInfo(path),
Path = path,
Parent = Parent,
CollectionType = CollectionType
@@ -129,7 +130,7 @@ namespace MediaBrowser.Controller.Entities
{
var paths = LibraryManager.NormalizeRootPathList(fileSystemDictionary.Keys);
- fileSystemDictionary = paths.Select(i => (FileSystemInfo)new DirectoryInfo(i)).ToDictionary(i => i.FullName);
+ fileSystemDictionary = paths.Select(FileSystem.GetDirectoryInfo).ToDictionary(i => i.FullName);
}
args.FileSystemDictionary = fileSystemDictionary;
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 2233e28ce..422c83d3b 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -13,6 +13,7 @@ using System.Linq;
using System.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Entities
{
@@ -1070,7 +1071,7 @@ namespace MediaBrowser.Controller.Entities
}
}
- protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var changesFound = false;
@@ -1091,7 +1092,7 @@ namespace MediaBrowser.Controller.Entities
/// Refreshes the linked children.
/// </summary>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- private bool RefreshLinkedChildren(IEnumerable<FileSystemInfo> fileSystemChildren)
+ private bool RefreshLinkedChildren(IEnumerable<FileSystemMetadata> fileSystemChildren)
{
var currentManualLinks = LinkedChildren.Where(i => i.Type == LinkedChildType.Manual).ToList();
var currentShortcutLinks = LinkedChildren.Where(i => i.Type == LinkedChildType.Shortcut).ToList();
diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs
index ffb351c94..55c5f7e11 100644
--- a/MediaBrowser.Controller/Entities/IHasImages.cs
+++ b/MediaBrowser.Controller/Entities/IHasImages.cs
@@ -3,6 +3,7 @@ using MediaBrowser.Model.Entities;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Entities
{
@@ -67,7 +68,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="type">The type.</param>
/// <param name="index">The index.</param>
/// <param name="file">The file.</param>
- void SetImagePath(ImageType type, int index, FileSystemInfo file);
+ void SetImagePath(ImageType type, int index, FileSystemMetadata file);
/// <summary>
/// Determines whether the specified type has image.
@@ -134,7 +135,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="imageType">Type of the image.</param>
/// <param name="images">The images.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
- bool AddImages(ImageType imageType, List<FileSystemInfo> images);
+ bool AddImages(ImageType imageType, List<FileSystemMetadata> images);
/// <summary>
/// Determines whether [is save local metadata enabled].
@@ -215,7 +216,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="item">The item.</param>
/// <param name="imageType">Type of the image.</param>
/// <param name="file">The file.</param>
- public static void SetImagePath(this IHasImages item, ImageType imageType, FileSystemInfo file)
+ public static void SetImagePath(this IHasImages item, ImageType imageType, FileSystemMetadata file)
{
item.SetImagePath(imageType, 0, file);
}
@@ -228,7 +229,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="file">The file.</param>
public static void SetImagePath(this IHasImages item, ImageType imageType, string file)
{
- item.SetImagePath(imageType, new FileInfo(file));
+ item.SetImagePath(imageType, BaseItem.FileSystem.GetFileInfo(file));
}
}
}
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index 083ec0cb4..8910fdbdd 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -8,6 +8,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Entities.Movies
{
@@ -122,7 +123,7 @@ namespace MediaBrowser.Controller.Entities.Movies
return key;
}
- protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var hasChanges = await base.RefreshedOwnedItems(options, fileSystemChildren, cancellationToken).ConfigureAwait(false);
@@ -141,7 +142,7 @@ namespace MediaBrowser.Controller.Entities.Movies
return hasChanges;
}
- private async Task<bool> RefreshSpecialFeatures(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ private async Task<bool> RefreshSpecialFeatures(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var newItems = LibraryManager.FindExtras(this, fileSystemChildren, options.DirectoryService).ToList();
var newItemIds = newItems.Select(i => i.Id).ToList();
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index 21405faf1..5f5743b1d 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -11,6 +11,7 @@ using System.Linq;
using System.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Entities
{
@@ -343,7 +344,7 @@ namespace MediaBrowser.Controller.Entities
}
}
- protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
+ protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var hasChanges = await base.RefreshedOwnedItems(options, fileSystemChildren, cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Controller/IO/FileData.cs b/MediaBrowser.Controller/IO/FileData.cs
index fb0f07331..503727e14 100644
--- a/MediaBrowser.Controller/IO/FileData.cs
+++ b/MediaBrowser.Controller/IO/FileData.cs
@@ -25,7 +25,7 @@ namespace MediaBrowser.Controller.IO
/// <param name="resolveShortcuts">if set to <c>true</c> [resolve shortcuts].</param>
/// <returns>Dictionary{System.StringFileSystemInfo}.</returns>
/// <exception cref="System.ArgumentNullException">path</exception>
- public static Dictionary<string, FileSystemInfo> GetFilteredFileSystemEntries(IDirectoryService directoryService,
+ public static Dictionary<string, FileSystemMetadata> GetFilteredFileSystemEntries(IDirectoryService directoryService,
string path,
IFileSystem fileSystem,
ILogger logger,
@@ -49,7 +49,7 @@ namespace MediaBrowser.Controller.IO
var entries = directoryService.GetFileSystemEntries(path);
- var dict = new Dictionary<string, FileSystemInfo>(StringComparer.OrdinalIgnoreCase);
+ var dict = new Dictionary<string, FileSystemMetadata>(StringComparer.OrdinalIgnoreCase);
foreach (var entry in entries)
{
@@ -69,7 +69,7 @@ namespace MediaBrowser.Controller.IO
}
// Don't check if it exists here because that could return false for network shares.
- var data = new DirectoryInfo(newPath);
+ var data = fileSystem.GetDirectoryInfo(newPath);
// add to our physical locations
args.AddAdditionalLocation(newPath);
diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs
index 9331ca759..93f291aae 100644
--- a/MediaBrowser.Controller/Library/ILibraryManager.cs
+++ b/MediaBrowser.Controller/Library/ILibraryManager.cs
@@ -11,6 +11,7 @@ using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Library
{
@@ -25,19 +26,18 @@ namespace MediaBrowser.Controller.Library
/// <param name="fileInfo">The file information.</param>
/// <param name="parent">The parent.</param>
/// <returns>BaseItem.</returns>
- BaseItem ResolvePath(FileSystemInfo fileInfo,
+ BaseItem ResolvePath(FileSystemMetadata fileInfo,
Folder parent = null);
/// <summary>
/// Resolves a set of files into a list of BaseItem
/// </summary>
- /// <typeparam name="T"></typeparam>
/// <param name="files">The files.</param>
/// <param name="directoryService">The directory service.</param>
/// <param name="parent">The parent.</param>
/// <param name="collectionType">Type of the collection.</param>
/// <returns>List{``0}.</returns>
- IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemInfo> files,
+ IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemMetadata> files,
IDirectoryService directoryService,
Folder parent, string
collectionType = null);
@@ -434,7 +434,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="fileSystemChildren">The file system children.</param>
/// <param name="directoryService">The directory service.</param>
/// <returns>IEnumerable&lt;Trailer&gt;.</returns>
- IEnumerable<Video> FindTrailers(BaseItem owner, List<FileSystemInfo> fileSystemChildren,
+ IEnumerable<Video> FindTrailers(BaseItem owner, List<FileSystemMetadata> fileSystemChildren,
IDirectoryService directoryService);
/// <summary>
@@ -444,7 +444,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="fileSystemChildren">The file system children.</param>
/// <param name="directoryService">The directory service.</param>
/// <returns>IEnumerable&lt;Video&gt;.</returns>
- IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemInfo> fileSystemChildren,
+ IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemMetadata> fileSystemChildren,
IDirectoryService directoryService);
/// <summary>
@@ -509,5 +509,14 @@ namespace MediaBrowser.Controller.Library
/// <param name="query">The query.</param>
/// <returns>QueryResult&lt;BaseItem&gt;.</returns>
QueryResult<BaseItem> QueryItems(InternalItemsQuery query);
+
+ /// <summary>
+ /// Substitutes the path.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="from">From.</param>
+ /// <param name="to">To.</param>
+ /// <returns>System.String.</returns>
+ string SubstitutePath(string path, string from, string to);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Library/ItemResolveArgs.cs b/MediaBrowser.Controller/Library/ItemResolveArgs.cs
index db441d285..653436691 100644
--- a/MediaBrowser.Controller/Library/ItemResolveArgs.cs
+++ b/MediaBrowser.Controller/Library/ItemResolveArgs.cs
@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Library
{
@@ -35,7 +36,7 @@ namespace MediaBrowser.Controller.Library
/// Gets the file system children.
/// </summary>
/// <value>The file system children.</value>
- public IEnumerable<FileSystemInfo> FileSystemChildren
+ public IEnumerable<FileSystemMetadata> FileSystemChildren
{
get
{
@@ -43,7 +44,7 @@ namespace MediaBrowser.Controller.Library
if (dict == null)
{
- return new List<FileSystemInfo>();
+ return new List<FileSystemMetadata>();
}
return dict.Values;
@@ -54,7 +55,7 @@ namespace MediaBrowser.Controller.Library
/// Gets or sets the file system dictionary.
/// </summary>
/// <value>The file system dictionary.</value>
- public Dictionary<string, FileSystemInfo> FileSystemDictionary { get; set; }
+ public Dictionary<string, FileSystemMetadata> FileSystemDictionary { get; set; }
/// <summary>
/// Gets or sets the parent.
@@ -66,7 +67,7 @@ namespace MediaBrowser.Controller.Library
/// Gets or sets the file info.
/// </summary>
/// <value>The file info.</value>
- public FileSystemInfo FileInfo { get; set; }
+ public FileSystemMetadata FileInfo { get; set; }
/// <summary>
/// Gets or sets the path.
@@ -201,7 +202,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="name">The name.</param>
/// <returns>FileSystemInfo.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
- public FileSystemInfo GetFileSystemEntryByName(string name)
+ public FileSystemMetadata GetFileSystemEntryByName(string name)
{
if (string.IsNullOrEmpty(name))
{
@@ -217,7 +218,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="path">The path.</param>
/// <returns>FileSystemInfo.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
- public FileSystemInfo GetFileSystemEntryByPath(string path)
+ public FileSystemMetadata GetFileSystemEntryByPath(string path)
{
if (string.IsNullOrEmpty(path))
{
@@ -226,7 +227,7 @@ namespace MediaBrowser.Controller.Library
if (FileSystemDictionary != null)
{
- FileSystemInfo entry;
+ FileSystemMetadata entry;
if (FileSystemDictionary.TryGetValue(path, out entry))
{
diff --git a/MediaBrowser.Controller/Providers/DirectoryService.cs b/MediaBrowser.Controller/Providers/DirectoryService.cs
index d320409f4..6890b7a7c 100644
--- a/MediaBrowser.Controller/Providers/DirectoryService.cs
+++ b/MediaBrowser.Controller/Providers/DirectoryService.cs
@@ -13,8 +13,8 @@ namespace MediaBrowser.Controller.Providers
private readonly ILogger _logger;
private readonly IFileSystem _fileSystem;
- private readonly ConcurrentDictionary<string, Dictionary<string,FileSystemInfo>> _cache =
- new ConcurrentDictionary<string, Dictionary<string, FileSystemInfo>>(StringComparer.OrdinalIgnoreCase);
+ private readonly ConcurrentDictionary<string, Dictionary<string, FileSystemMetadata>> _cache =
+ new ConcurrentDictionary<string, Dictionary<string, FileSystemMetadata>>(StringComparer.OrdinalIgnoreCase);
public DirectoryService(ILogger logger, IFileSystem fileSystem)
{
@@ -27,28 +27,28 @@ namespace MediaBrowser.Controller.Providers
{
}
- public IEnumerable<FileSystemInfo> GetFileSystemEntries(string path)
+ public IEnumerable<FileSystemMetadata> GetFileSystemEntries(string path)
{
return GetFileSystemEntries(path, false);
}
- public Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path)
+ public Dictionary<string, FileSystemMetadata> GetFileSystemDictionary(string path)
{
return GetFileSystemDictionary(path, false);
}
- private Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path, bool clearCache)
+ private Dictionary<string, FileSystemMetadata> GetFileSystemDictionary(string path, bool clearCache)
{
if (string.IsNullOrWhiteSpace(path))
{
throw new ArgumentNullException("path");
}
- Dictionary<string, FileSystemInfo> entries;
+ Dictionary<string, FileSystemMetadata> entries;
if (clearCache)
{
- Dictionary<string, FileSystemInfo> removed;
+ Dictionary<string, FileSystemMetadata> removed;
_cache.TryRemove(path, out removed);
}
@@ -57,7 +57,7 @@ namespace MediaBrowser.Controller.Providers
{
//_logger.Debug("Getting files for " + path);
- entries = new Dictionary<string, FileSystemInfo>(StringComparer.OrdinalIgnoreCase);
+ entries = new Dictionary<string, FileSystemMetadata>(StringComparer.OrdinalIgnoreCase);
try
{
@@ -82,34 +82,34 @@ namespace MediaBrowser.Controller.Providers
return entries;
}
- private IEnumerable<FileSystemInfo> GetFileSystemEntries(string path, bool clearCache)
+ private IEnumerable<FileSystemMetadata> GetFileSystemEntries(string path, bool clearCache)
{
return GetFileSystemDictionary(path, clearCache).Values;
}
- public IEnumerable<FileSystemInfo> GetFiles(string path)
+ public IEnumerable<FileSystemMetadata> GetFiles(string path)
{
return GetFiles(path, false);
}
- public IEnumerable<FileSystemInfo> GetFiles(string path, bool clearCache)
+ public IEnumerable<FileSystemMetadata> GetFiles(string path, bool clearCache)
{
return GetFileSystemEntries(path, clearCache).Where(i => (i.Attributes & FileAttributes.Directory) != FileAttributes.Directory);
}
- public FileSystemInfo GetFile(string path)
+ public FileSystemMetadata GetFile(string path)
{
var directory = Path.GetDirectoryName(path);
var dict = GetFileSystemDictionary(directory, false);
- FileSystemInfo entry;
+ FileSystemMetadata entry;
dict.TryGetValue(path, out entry);
return entry;
}
- public IEnumerable<FileSystemInfo> GetDirectories(string path)
+ public IEnumerable<FileSystemMetadata> GetDirectories(string path)
{
return GetFileSystemEntries(path, false).Where(i => (i.Attributes & FileAttributes.Directory) == FileAttributes.Directory);
}
diff --git a/MediaBrowser.Controller/Providers/IDirectoryService.cs b/MediaBrowser.Controller/Providers/IDirectoryService.cs
index 343cf361f..06507d5d2 100644
--- a/MediaBrowser.Controller/Providers/IDirectoryService.cs
+++ b/MediaBrowser.Controller/Providers/IDirectoryService.cs
@@ -1,15 +1,16 @@
using System.Collections.Generic;
using System.IO;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Providers
{
public interface IDirectoryService
{
- IEnumerable<FileSystemInfo> GetFileSystemEntries(string path);
- IEnumerable<FileSystemInfo> GetFiles(string path);
- IEnumerable<FileSystemInfo> GetDirectories(string path);
- IEnumerable<FileSystemInfo> GetFiles(string path, bool clearCache);
- FileSystemInfo GetFile(string path);
- Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path);
+ IEnumerable<FileSystemMetadata> GetFileSystemEntries(string path);
+ IEnumerable<FileSystemMetadata> GetFiles(string path);
+ IEnumerable<FileSystemMetadata> GetDirectories(string path);
+ IEnumerable<FileSystemMetadata> GetFiles(string path, bool clearCache);
+ FileSystemMetadata GetFile(string path);
+ Dictionary<string, FileSystemMetadata> GetFileSystemDictionary(string path);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Providers/LocalImageInfo.cs b/MediaBrowser.Controller/Providers/LocalImageInfo.cs
index 59d74def2..3b51a96f0 100644
--- a/MediaBrowser.Controller/Providers/LocalImageInfo.cs
+++ b/MediaBrowser.Controller/Providers/LocalImageInfo.cs
@@ -1,11 +1,12 @@
using System.IO;
+using MediaBrowser.Common.IO;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Providers
{
public class LocalImageInfo
{
- public FileSystemInfo FileInfo { get; set; }
+ public FileSystemMetadata FileInfo { get; set; }
public ImageType Type { get; set; }
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Resolvers/IItemResolver.cs b/MediaBrowser.Controller/Resolvers/IItemResolver.cs
index fec6be55c..660a6a87a 100644
--- a/MediaBrowser.Controller/Resolvers/IItemResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/IItemResolver.cs
@@ -3,6 +3,7 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using System.Collections.Generic;
using System.IO;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Controller.Resolvers
{
@@ -26,8 +27,8 @@ namespace MediaBrowser.Controller.Resolvers
public interface IMultiItemResolver
{
- MultiItemResolverResult ResolveMultiple(Folder parent,
- List<FileSystemInfo> files,
+ MultiItemResolverResult ResolveMultiple(Folder parent,
+ List<FileSystemMetadata> files,
string collectionType,
IDirectoryService directoryService);
}
@@ -35,12 +36,12 @@ namespace MediaBrowser.Controller.Resolvers
public class MultiItemResolverResult
{
public List<BaseItem> Items { get; set; }
- public List<FileSystemInfo> ExtraFiles { get; set; }
+ public List<FileSystemMetadata> ExtraFiles { get; set; }
public MultiItemResolverResult()
{
Items = new List<BaseItem>();
- ExtraFiles = new List<FileSystemInfo>();
+ ExtraFiles = new List<FileSystemMetadata>();
}
}
}
diff --git a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs
index aa0f11475..fb96cadc3 100644
--- a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs
@@ -54,7 +54,7 @@ namespace MediaBrowser.LocalMetadata
FileSystem = fileSystem;
}
- protected abstract FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService);
+ protected abstract FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService);
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
{
diff --git a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
index 0089a71d5..bafb23011 100644
--- a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
+++ b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs
@@ -60,7 +60,7 @@ namespace MediaBrowser.LocalMetadata.Images
return new List<LocalImageInfo>();
}
- private List<LocalImageInfo> GetFilesFromParentFolder(string filenameWithoutExtension, IEnumerable<FileSystemInfo> parentPathFiles)
+ private List<LocalImageInfo> GetFilesFromParentFolder(string filenameWithoutExtension, IEnumerable<FileSystemMetadata> parentPathFiles)
{
var thumbName = filenameWithoutExtension + "-thumb";
@@ -91,7 +91,7 @@ namespace MediaBrowser.LocalMetadata.Images
})
.Select(i => new LocalImageInfo
{
- FileInfo = (FileInfo)i,
+ FileInfo = i,
Type = ImageType.Primary
})
.ToList();
diff --git a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs
index ba87b3c43..90aa72a6a 100644
--- a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs
+++ b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs
@@ -62,11 +62,11 @@ namespace MediaBrowser.LocalMetadata.Images
return false;
}
- private IEnumerable<FileSystemInfo> GetFiles(IHasImages item, bool includeDirectories, IDirectoryService directoryService)
+ private IEnumerable<FileSystemMetadata> GetFiles(IHasImages item, bool includeDirectories, IDirectoryService directoryService)
{
if (item.LocationType != LocationType.FileSystem)
{
- return new List<FileSystemInfo>();
+ return new List<FileSystemMetadata>();
}
var path = item.ContainingFolderPath;
@@ -127,7 +127,7 @@ namespace MediaBrowser.LocalMetadata.Images
return list;
}
- private void PopulateImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, bool supportParentSeriesFiles, IDirectoryService directoryService)
+ private void PopulateImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemMetadata> files, bool supportParentSeriesFiles, IDirectoryService directoryService)
{
var imagePrefix = item.FileNameWithoutExtension + "-";
var isInMixedFolder = item.IsInMixedFolder;
@@ -164,7 +164,7 @@ namespace MediaBrowser.LocalMetadata.Images
}
}
- private void PopulatePrimaryImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder)
+ private void PopulatePrimaryImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, bool isInMixedFolder)
{
var names = new List<string>
{
@@ -206,7 +206,7 @@ namespace MediaBrowser.LocalMetadata.Images
}
}
- private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder, IDirectoryService directoryService)
+ private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, bool isInMixedFolder, IDirectoryService directoryService)
{
PopulateBackdrops(images, files, imagePrefix, "backdrop", "backdrop", isInMixedFolder, ImageType.Backdrop);
@@ -261,12 +261,12 @@ namespace MediaBrowser.LocalMetadata.Images
}));
}
- private void PopulateScreenshots(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder)
+ private void PopulateScreenshots(List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, bool isInMixedFolder)
{
PopulateBackdrops(images, files, imagePrefix, "screenshot", "screenshot", isInMixedFolder, ImageType.Screenshot);
}
- private void PopulateBackdrops(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, string firstFileName, string subsequentFileNamePrefix, bool isInMixedFolder, ImageType type)
+ private void PopulateBackdrops(List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, string firstFileName, string subsequentFileNamePrefix, bool isInMixedFolder, ImageType type)
{
AddImage(files, images, imagePrefix + firstFileName, type);
@@ -349,7 +349,7 @@ namespace MediaBrowser.LocalMetadata.Images
}
}
- private bool AddImage(List<FileSystemInfo> files, List<LocalImageInfo> images, string name, string imagePrefix, bool isInMixedFolder, ImageType type)
+ private bool AddImage(List<FileSystemMetadata> files, List<LocalImageInfo> images, string name, string imagePrefix, bool isInMixedFolder, ImageType type)
{
var added = AddImage(files, images, imagePrefix + name, type);
@@ -364,9 +364,9 @@ namespace MediaBrowser.LocalMetadata.Images
return added;
}
- private bool AddImage(IEnumerable<FileSystemInfo> files, List<LocalImageInfo> images, string name, ImageType type)
+ private bool AddImage(IEnumerable<FileSystemMetadata> files, List<LocalImageInfo> images, string name, ImageType type)
{
- var image = GetImage(files, name) as FileInfo;
+ var image = GetImage(files, name);
if (image != null)
{
@@ -382,7 +382,7 @@ namespace MediaBrowser.LocalMetadata.Images
return false;
}
- private void AddCacheKeyImage(IEnumerable<FileSystemInfo> files, List<LocalImageInfo> images, ImageType type)
+ private void AddCacheKeyImage(IEnumerable<FileSystemMetadata> files, List<LocalImageInfo> images, ImageType type)
{
var candidates = files
.Where(i => _fileSystem.GetFileNameWithoutExtension(i).StartsWith(type.ToString() + "_key_", StringComparison.OrdinalIgnoreCase))
@@ -390,7 +390,7 @@ namespace MediaBrowser.LocalMetadata.Images
var image = BaseItem.SupportedImageExtensions
.Select(i => candidates.FirstOrDefault(c => string.Equals(c.Extension, i, StringComparison.OrdinalIgnoreCase)))
- .FirstOrDefault(i => i != null) as FileInfo;
+ .FirstOrDefault(i => i != null);
if (image != null)
{
@@ -402,7 +402,7 @@ namespace MediaBrowser.LocalMetadata.Images
}
}
- private FileSystemInfo GetImage(IEnumerable<FileSystemInfo> files, string name)
+ private FileSystemMetadata GetImage(IEnumerable<FileSystemMetadata> files, string name)
{
return files.FirstOrDefault(i => ((i.Attributes & FileAttributes.Directory) != FileAttributes.Directory) && string.Equals(name, _fileSystem.GetFileNameWithoutExtension(i), StringComparison.OrdinalIgnoreCase));
}
diff --git a/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs
index 08454c8e7..c4c9ae07f 100644
--- a/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs
+++ b/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs
@@ -8,6 +8,7 @@ using System.Globalization;
using System.IO;
using System.Threading;
using System.Xml;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.LocalMetadata.Parsers
{
@@ -17,10 +18,12 @@ namespace MediaBrowser.LocalMetadata.Parsers
public class EpisodeXmlParser : BaseItemXmlParser<Episode>
{
private List<LocalImageInfo> _imagesFound;
+ private readonly IFileSystem _fileSystem;
- public EpisodeXmlParser(ILogger logger)
+ public EpisodeXmlParser(ILogger logger, IFileSystem fileSystem)
: base(logger)
{
+ _fileSystem = fileSystem;
}
private string _xmlPath;
@@ -80,7 +83,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
var parentFolder = Path.GetDirectoryName(_xmlPath);
filename = Path.Combine(parentFolder, filename);
- var file = new FileInfo(filename);
+ var file = _fileSystem.GetFileInfo(filename);
if (file.Exists)
{
diff --git a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs
index fc22e75c5..0d4d32703 100644
--- a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs
@@ -26,7 +26,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new BoxSetXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "collection.xml"));
}
diff --git a/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs
index bf2730032..8b181a043 100644
--- a/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs
@@ -25,12 +25,12 @@ namespace MediaBrowser.LocalMetadata.Providers
var images = new List<LocalImageInfo>();
var chapters = new List<ChapterInfo>();
- new EpisodeXmlParser(_logger).Fetch(result, images, path, cancellationToken);
+ new EpisodeXmlParser(_logger, FileSystem).Fetch(result, images, path, cancellationToken);
result.Images = images;
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
var metadataPath = Path.GetDirectoryName(info.Path);
metadataPath = Path.Combine(metadataPath, "metadata");
diff --git a/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs
index bf059c553..6b9450a0b 100644
--- a/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs
@@ -25,9 +25,9 @@ namespace MediaBrowser.LocalMetadata.Providers
new BaseItemXmlParser<Folder>(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
- return new FileInfo(Path.Combine(info.Path, "folder.xml"));
+ return directoryService.GetFile(Path.Combine(info.Path, "folder.xml"));
}
}
}
diff --git a/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs
index f51605f06..a6ef9983b 100644
--- a/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new GameSystemXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "gamesystem.xml"));
}
diff --git a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs
index 7ee2c768b..c0c46b955 100644
--- a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs
@@ -23,12 +23,12 @@ namespace MediaBrowser.LocalMetadata.Providers
new GameXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
var specificFile = Path.ChangeExtension(info.Path, ".xml");
- var file = new FileInfo(specificFile);
+ var file = FileSystem.GetFileInfo(specificFile);
- return info.IsInMixedFolder || file.Exists ? file : new FileInfo(Path.Combine(Path.GetDirectoryName(info.Path), "game.xml"));
+ return info.IsInMixedFolder || file.Exists ? file : FileSystem.GetFileInfo(Path.Combine(Path.GetDirectoryName(info.Path), "game.xml"));
}
}
}
diff --git a/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs
index 82c7dbd67..2d0de082e 100644
--- a/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs
@@ -23,27 +23,22 @@ namespace MediaBrowser.LocalMetadata.Providers
new MovieXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return GetXmlFileInfo(info, FileSystem);
}
- public static FileInfo GetXmlFileInfo(ItemInfo info, IFileSystem fileSystem)
+ public static FileSystemMetadata GetXmlFileInfo(ItemInfo info, IFileSystem fileSystem)
{
var fileInfo = fileSystem.GetFileSystemInfo(info.Path);
- var directoryInfo = fileInfo as DirectoryInfo;
-
- if (directoryInfo == null)
- {
- directoryInfo = new DirectoryInfo(Path.GetDirectoryName(info.Path));
- }
+ var directoryInfo = fileInfo.IsDirectory ? fileInfo : fileSystem.GetDirectoryInfo(Path.GetDirectoryName(info.Path));
var directoryPath = directoryInfo.FullName;
var specificFile = Path.Combine(directoryPath, fileSystem.GetFileNameWithoutExtension(info.Path) + ".xml");
- var file = new FileInfo(specificFile);
+ var file = fileSystem.GetFileInfo(specificFile);
// In a mixed folder, only {moviename}.xml is supported
if (info.IsInMixedFolder)
@@ -52,7 +47,7 @@ namespace MediaBrowser.LocalMetadata.Providers
}
// If in it's own folder, prefer movie.xml, but allow the specific file as well
- var movieFile = new FileInfo(Path.Combine(directoryPath, "movie.xml"));
+ var movieFile = fileSystem.GetFileInfo(Path.Combine(directoryPath, "movie.xml"));
return movieFile.Exists ? movieFile : file;
}
diff --git a/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs
index 3171dd9a7..7e31f3080 100644
--- a/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new MusicVideoXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return MovieXmlProvider.GetXmlFileInfo(info, FileSystem);
}
diff --git a/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs
index 115d5b041..32af7011a 100644
--- a/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs
@@ -22,7 +22,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new BaseItemXmlParser<Person>(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "person.xml"));
}
diff --git a/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs
index 3de311e2b..f66c6f232 100644
--- a/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new PlaylistXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "playlist.xml"));
}
diff --git a/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs
index f0c8f0fa1..4d68d9c7b 100644
--- a/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs
@@ -26,7 +26,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new SeasonXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "season.xml"));
}
diff --git a/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs
index 80fdad483..17d80d87a 100644
--- a/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs
@@ -26,7 +26,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new SeriesXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "series.xml"));
}
diff --git a/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs
index 56d289f97..17fd9cbd8 100644
--- a/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs
+++ b/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers
new VideoXmlParser(_logger).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return MovieXmlProvider.GetXmlFileInfo(info, FileSystem);
}
diff --git a/MediaBrowser.Model/Devices/DeviceInfo.cs b/MediaBrowser.Model/Devices/DeviceInfo.cs
index 726e9d6e5..d8358977e 100644
--- a/MediaBrowser.Model/Devices/DeviceInfo.cs
+++ b/MediaBrowser.Model/Devices/DeviceInfo.cs
@@ -27,7 +27,10 @@ namespace MediaBrowser.Model.Devices
/// <value>The name.</value>
public string Name
{
- get { return string.IsNullOrEmpty(CustomName) ? ReportedName : CustomName; }
+ get
+ {
+ return string.IsNullOrEmpty(CustomName) ? ReportedName : CustomName;
+ }
}
/// <summary>
diff --git a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
index ae2421f65..f4aa68b24 100644
--- a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
+++ b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs
@@ -24,7 +24,7 @@ namespace MediaBrowser.Providers.ImagesByName
/// <returns>Task.</returns>
public static async Task EnsureList(string url, string file, IHttpClient httpClient, IFileSystem fileSystem, SemaphoreSlim semaphore, CancellationToken cancellationToken)
{
- var fileInfo = new FileInfo(file);
+ var fileInfo = fileSystem.GetFileInfo(file);
if (!fileInfo.Exists || (DateTime.UtcNow - fileSystem.GetLastWriteTimeUtc(fileInfo)).TotalDays > 1)
{
diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs
index dec688635..bc52c4f6d 100644
--- a/MediaBrowser.Providers/Manager/ImageSaver.cs
+++ b/MediaBrowser.Providers/Manager/ImageSaver.cs
@@ -291,7 +291,7 @@ namespace MediaBrowser.Providers.Manager
/// imageIndex</exception>
private void SetImagePath(IHasImages item, ImageType type, int? imageIndex, string path)
{
- item.SetImagePath(type, imageIndex ?? 0, new FileInfo(path));
+ item.SetImagePath(type, imageIndex ?? 0, _fileSystem.GetFileInfo(path));
}
/// <summary>
diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs b/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
index ae5f93a2e..3e282f253 100644
--- a/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
+++ b/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
@@ -99,7 +99,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
}
- public static IEnumerable<FileSystemInfo> GetSubtitleFiles(Video video, IDirectoryService directoryService, IFileSystem fileSystem, bool clearCache)
+ public static IEnumerable<FileSystemMetadata> GetSubtitleFiles(Video video, IDirectoryService directoryService, IFileSystem fileSystem, bool clearCache)
{
var containingPath = video.ContainingFolderPath;
diff --git a/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs b/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs
index 8d0437f05..629bb97bf 100644
--- a/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs
+++ b/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs
@@ -70,7 +70,7 @@ namespace MediaBrowser.Providers.Movies
var timestampFile = Path.Combine(path, "time.txt");
- var timestampFileInfo = new FileInfo(timestampFile);
+ var timestampFileInfo = _fileSystem.GetFileInfo(timestampFile);
// Don't check for updates every single time
if (timestampFileInfo.Exists && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(timestampFileInfo)).TotalDays < 3)
diff --git a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
index 3cf0c42b6..4a0b52978 100644
--- a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
+++ b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
@@ -234,7 +234,7 @@ namespace MediaBrowser.Providers.Movies
// Process images
var path = GetFanartJsonPath(id);
- var fileInfo = new FileInfo(path);
+ var fileInfo = _fileSystem.GetFileInfo(path);
return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index 4136d3601..d458aabc4 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -381,7 +381,7 @@ namespace MediaBrowser.Providers.Movies
// Process images
var dataFilePath = GetDataFilePath(tmdbId, item.GetPreferredMetadataLanguage());
- var fileInfo = new FileInfo(dataFilePath);
+ var fileInfo = _fileSystem.GetFileInfo(dataFilePath);
return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/Movies/MovieUpdatesPrescanTask.cs b/MediaBrowser.Providers/Movies/MovieUpdatesPrescanTask.cs
index 586e9ad40..972c8e2ea 100644
--- a/MediaBrowser.Providers/Movies/MovieUpdatesPrescanTask.cs
+++ b/MediaBrowser.Providers/Movies/MovieUpdatesPrescanTask.cs
@@ -80,7 +80,7 @@ namespace MediaBrowser.Providers.Movies
var timestampFile = Path.Combine(path, "time.txt");
- var timestampFileInfo = new FileInfo(timestampFile);
+ var timestampFileInfo = _fileSystem.GetFileInfo(timestampFile);
// Don't check for updates every single time
if (timestampFileInfo.Exists && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(timestampFileInfo)).TotalDays < 7)
diff --git a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs
index 0676d93d1..8eda5ca96 100644
--- a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs
+++ b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs
@@ -375,7 +375,7 @@ namespace MediaBrowser.Providers.Music
// Process images
var artistXmlPath = FanartArtistProvider.GetArtistXmlPath(_config.CommonApplicationPaths, artistMusicBrainzId);
- var fileInfo = new FileInfo(artistXmlPath);
+ var fileInfo = _fileSystem.GetFileInfo(artistXmlPath);
return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
index 7076a0016..07b193f47 100644
--- a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
+++ b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs
@@ -387,7 +387,7 @@ namespace MediaBrowser.Providers.Music
// Process images
var artistXmlPath = GetArtistXmlPath(_config.CommonApplicationPaths, id);
- var fileInfo = new FileInfo(artistXmlPath);
+ var fileInfo = _fileSystem.GetFileInfo(artistXmlPath);
return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/Music/FanArtUpdatesPostScanTask.cs b/MediaBrowser.Providers/Music/FanArtUpdatesPostScanTask.cs
index 86fb0899f..63d92b1e5 100644
--- a/MediaBrowser.Providers/Music/FanArtUpdatesPostScanTask.cs
+++ b/MediaBrowser.Providers/Music/FanArtUpdatesPostScanTask.cs
@@ -69,7 +69,7 @@ namespace MediaBrowser.Providers.Music
var timestampFile = Path.Combine(path, "time.txt");
- var timestampFileInfo = new FileInfo(timestampFile);
+ var timestampFileInfo = _fileSystem.GetFileInfo(timestampFile);
// Don't check for updates every single time
if (timestampFileInfo.Exists && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(timestampFileInfo)).TotalDays < 3)
diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs
index a5b12dad2..3fbc5d58c 100644
--- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs
+++ b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs
@@ -248,7 +248,7 @@ namespace MediaBrowser.Providers.TV
// Process images
var imagesFilePath = FanartSeriesProvider.Current.GetFanartJsonPath(tvdbId);
- var fileInfo = new FileInfo(imagesFilePath);
+ var fileInfo = _fileSystem.GetFileInfo(imagesFilePath);
return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs b/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs
index 32fd0b119..48b2dcc1b 100644
--- a/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs
+++ b/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs
@@ -69,7 +69,7 @@ namespace MediaBrowser.Providers.TV
var timestampFile = Path.Combine(path, "time.txt");
- var timestampFileInfo = new FileInfo(timestampFile);
+ var timestampFileInfo = _fileSystem.GetFileInfo(timestampFile);
// Don't check for updates every single time
if (timestampFileInfo.Exists && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(timestampFileInfo)).TotalDays < 3)
diff --git a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs
index a353ef4bd..6879c7bb2 100644
--- a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs
@@ -356,7 +356,7 @@ namespace MediaBrowser.Providers.TV
// Process images
var imagesFilePath = GetFanartJsonPath(tvdbId);
- var fileInfo = new FileInfo(imagesFilePath);
+ var fileInfo = _fileSystem.GetFileInfo(imagesFilePath);
return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/TV/MovieDbSeriesProvider.cs b/MediaBrowser.Providers/TV/MovieDbSeriesProvider.cs
index 78595718d..ef367bc11 100644
--- a/MediaBrowser.Providers/TV/MovieDbSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/MovieDbSeriesProvider.cs
@@ -412,7 +412,7 @@ namespace MediaBrowser.Providers.TV
// Process images
var dataFilePath = GetDataFilePath(tmdbId, item.GetPreferredMetadataLanguage());
- var fileInfo = new FileInfo(dataFilePath);
+ var fileInfo = _fileSystem.GetFileInfo(dataFilePath);
return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs
index 969a76e38..52464b88b 100644
--- a/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbEpisodeImageProvider.cs
@@ -75,7 +75,7 @@ namespace MediaBrowser.Providers.TV
return Task.FromResult<IEnumerable<RemoteImageInfo>>(new RemoteImageInfo[] { });
}
- private RemoteImageInfo GetImageInfo(FileInfo xmlFile, CancellationToken cancellationToken)
+ private RemoteImageInfo GetImageInfo(FileSystemMetadata xmlFile, CancellationToken cancellationToken)
{
var height = 225;
var width = 400;
diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
index ec713064e..5a520ae4c 100644
--- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
@@ -173,9 +173,9 @@ namespace MediaBrowser.Providers.TV
/// <param name="endingEpisodeNumber">The ending episode number.</param>
/// <param name="seriesDataPath">The series data path.</param>
/// <returns>List{FileInfo}.</returns>
- internal List<FileInfo> GetEpisodeXmlFiles(int? seasonNumber, int? episodeNumber, int? endingEpisodeNumber, string seriesDataPath)
+ internal List<FileSystemMetadata> GetEpisodeXmlFiles(int? seasonNumber, int? episodeNumber, int? endingEpisodeNumber, string seriesDataPath)
{
- var files = new List<FileInfo>();
+ var files = new List<FileSystemMetadata>();
if (episodeNumber == null)
{
@@ -189,7 +189,7 @@ namespace MediaBrowser.Providers.TV
var file = Path.Combine(seriesDataPath, string.Format("episode-{0}-{1}.xml", seasonNumber.Value, episodeNumber));
- var fileInfo = new FileInfo(file);
+ var fileInfo = _fileSystem.GetFileInfo(file);
var usingAbsoluteData = false;
if (fileInfo.Exists)
@@ -199,7 +199,7 @@ namespace MediaBrowser.Providers.TV
else
{
file = Path.Combine(seriesDataPath, string.Format("episode-abs-{0}.xml", episodeNumber));
- fileInfo = new FileInfo(file);
+ fileInfo = _fileSystem.GetFileInfo(file);
if (fileInfo.Exists)
{
files.Add(fileInfo);
@@ -221,7 +221,7 @@ namespace MediaBrowser.Providers.TV
file = Path.Combine(seriesDataPath, string.Format("episode-{0}-{1}.xml", seasonNumber.Value, episodeNumber));
}
- fileInfo = new FileInfo(file);
+ fileInfo = _fileSystem.GetFileInfo(file);
if (fileInfo.Exists)
{
files.Add(fileInfo);
diff --git a/MediaBrowser.Providers/TV/TvdbPrescanTask.cs b/MediaBrowser.Providers/TV/TvdbPrescanTask.cs
index 041f91355..04e3436c3 100644
--- a/MediaBrowser.Providers/TV/TvdbPrescanTask.cs
+++ b/MediaBrowser.Providers/TV/TvdbPrescanTask.cs
@@ -93,7 +93,7 @@ namespace MediaBrowser.Providers.TV
var timestampFile = Path.Combine(path, "time.txt");
- var timestampFileInfo = new FileInfo(timestampFile);
+ var timestampFileInfo = _fileSystem.GetFileInfo(timestampFile);
// Don't check for tvdb updates anymore frequently than 24 hours
if (timestampFileInfo.Exists && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(timestampFileInfo)).TotalDays < 1)
diff --git a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs b/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs
index 7f6224e5b..0b4187232 100644
--- a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs
@@ -380,7 +380,7 @@ namespace MediaBrowser.Providers.TV
// Process images
var imagesXmlPath = Path.Combine(TvdbSeriesProvider.GetSeriesDataPath(_config.ApplicationPaths, tvdbId), "banners.xml");
- var fileInfo = new FileInfo(imagesXmlPath);
+ var fileInfo = _fileSystem.GetFileInfo(imagesXmlPath);
return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > date;
}
diff --git a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs
index 6c8a06e38..725f4b958 100644
--- a/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbSeriesImageProvider.cs
@@ -352,7 +352,7 @@ namespace MediaBrowser.Providers.TV
// Process images
var imagesXmlPath = Path.Combine(TvdbSeriesProvider.GetSeriesDataPath(_config.ApplicationPaths, tvdbId), "banners.xml");
- var fileInfo = new FileInfo(imagesXmlPath);
+ var fileInfo = _fileSystem.GetFileInfo(imagesXmlPath);
return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > (status.DateLastMetadataRefresh ?? DateTime.MinValue);
}
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index 9b2f81217..b71444c74 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -388,18 +388,15 @@ namespace MediaBrowser.Server.Implementations.Channels
var path = Channel.GetInternalMetadataPath(_config.ApplicationPaths.InternalMetadataPath, id);
- var fileInfo = new DirectoryInfo(path);
-
var isNew = false;
- if (!fileInfo.Exists)
+ if (!_fileSystem.DirectoryExists(path))
{
_logger.Debug("Creating directory {0}", path);
_fileSystem.CreateDirectory(path);
- fileInfo = new DirectoryInfo(path);
- if (!fileInfo.Exists)
+ if (!_fileSystem.DirectoryExists(path))
{
throw new IOException("Path not created: " + path);
}
@@ -415,8 +412,8 @@ namespace MediaBrowser.Server.Implementations.Channels
{
Name = channelInfo.Name,
Id = id,
- DateCreated = _fileSystem.GetCreationTimeUtc(fileInfo),
- DateModified = _fileSystem.GetLastWriteTimeUtc(fileInfo),
+ DateCreated = _fileSystem.GetCreationTimeUtc(path),
+ DateModified = _fileSystem.GetLastWriteTimeUtc(path),
Path = path,
ChannelId = channelInfo.Name.GetMD5().ToString("N")
};
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 07374a6c3..c1daa525a 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1577,7 +1577,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
foreach (var map in _config.Configuration.PathSubstitutions)
{
- path = _fileSystem.SubstitutePath(path, map.From, map.To);
+ path = _libraryManager.SubstitutePath(path, map.From, map.To);
}
}
diff --git a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs
index b84bf9514..6b91f7cf4 100644
--- a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs
+++ b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs
@@ -35,12 +35,13 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
_providerManager = providerManager;
}
- private bool FilterValidVideoFile(FileInfo fileInfo)
+ private bool EnableOrganization(FileSystemMetadata fileInfo, TvFileOrganizationOptions options)
{
+ var minFileBytes = options.MinFileSizeMb * 1024 * 1024;
+
try
{
- var fullName = fileInfo.FullName;
- return _libraryManager.IsVideoFile(fileInfo.FullName);
+ return _libraryManager.IsVideoFile(fileInfo.FullName) && fileInfo.Length >= minFileBytes;
}
catch (Exception ex)
{
@@ -50,15 +51,13 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
return false;
}
- public async Task Organize(AutoOrganizeOptions options, CancellationToken cancellationToken, IProgress<double> progress)
+ public async Task Organize(TvFileOrganizationOptions options, CancellationToken cancellationToken, IProgress<double> progress)
{
- var minFileBytes = options.MinFileSizeMb * 1024 * 1024;
-
var watchLocations = options.WatchLocations.ToList();
var eligibleFiles = watchLocations.SelectMany(GetFilesToOrganize)
.OrderBy(_fileSystem.GetCreationTimeUtc)
- .Where(i => FilterValidVideoFile(i) && i.Length >= minFileBytes)
+ .Where(i => EnableOrganization(i, options))
.ToList();
var processedFolders = new HashSet<string>();
@@ -128,7 +127,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
/// </summary>
/// <param name="path">The path.</param>
/// <returns>IEnumerable{FileInfo}.</returns>
- private IEnumerable<FileInfo> GetFilesToOrganize(string path)
+ private IEnumerable<FileSystemMetadata> GetFilesToOrganize(string path)
{
try
{
@@ -139,7 +138,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
{
_logger.ErrorException("Error getting files from {0}", ex, path);
- return new List<FileInfo>();
+ return new List<FileSystemMetadata>();
}
}
diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
index 1f545916a..0a2b6f9af 100644
--- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
+++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
@@ -114,12 +114,12 @@ namespace MediaBrowser.Server.Implementations.IO
private IServerConfigurationManager ConfigurationManager { get; set; }
private readonly IFileSystem _fileSystem;
- private IServerApplicationHost _appHost;
+ private readonly IServerApplicationHost _appHost;
/// <summary>
/// Initializes a new instance of the <see cref="LibraryMonitor" /> class.
/// </summary>
- public LibraryMonitor(ILogManager logManager, ITaskManager taskManager, ILibraryManager libraryManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem)
+ public LibraryMonitor(ILogManager logManager, ITaskManager taskManager, ILibraryManager libraryManager, IServerConfigurationManager configurationManager, IFileSystem fileSystem, IServerApplicationHost appHost)
{
if (taskManager == null)
{
@@ -131,6 +131,7 @@ namespace MediaBrowser.Server.Implementations.IO
Logger = logManager.GetLogger(GetType().Name);
ConfigurationManager = configurationManager;
_fileSystem = fileSystem;
+ _appHost = appHost;
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
}
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 0be871b0e..ec740c05f 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -34,6 +34,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Model.Extensions;
using MoreLinq;
using SortOrder = MediaBrowser.Model.Entities.SortOrder;
@@ -549,13 +550,13 @@ namespace MediaBrowser.Server.Implementations.Library
return item;
}
- public BaseItem ResolvePath(FileSystemInfo fileInfo,
+ public BaseItem ResolvePath(FileSystemMetadata fileInfo,
Folder parent = null)
{
return ResolvePath(fileInfo, new DirectoryService(_logger, _fileSystem), parent);
}
- private BaseItem ResolvePath(FileSystemInfo fileInfo, IDirectoryService directoryService, Folder parent = null, string collectionType = null)
+ private BaseItem ResolvePath(FileSystemMetadata fileInfo, IDirectoryService directoryService, Folder parent = null, string collectionType = null)
{
if (fileInfo == null)
{
@@ -599,7 +600,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
var paths = NormalizeRootPathList(fileSystemDictionary.Keys);
- fileSystemDictionary = paths.Select(i => (FileSystemInfo)new DirectoryInfo(i)).ToDictionary(i => i.FullName);
+ fileSystemDictionary = paths.Select(_fileSystem.GetDirectoryInfo).ToDictionary(i => i.FullName);
}
args.FileSystemDictionary = fileSystemDictionary;
@@ -642,7 +643,7 @@ namespace MediaBrowser.Server.Implementations.Library
return !args.ContainsFileSystemEntryByName(".ignore");
}
- public IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemInfo> files, IDirectoryService directoryService, Folder parent, string collectionType)
+ public IEnumerable<BaseItem> ResolvePaths(IEnumerable<FileSystemMetadata> files, IDirectoryService directoryService, Folder parent, string collectionType)
{
var fileList = files.ToList();
@@ -670,7 +671,7 @@ namespace MediaBrowser.Server.Implementations.Library
return ResolveFileList(fileList, directoryService, parent, collectionType);
}
- private IEnumerable<BaseItem> ResolveFileList(IEnumerable<FileSystemInfo> fileList, IDirectoryService directoryService, Folder parent, string collectionType)
+ private IEnumerable<BaseItem> ResolveFileList(IEnumerable<FileSystemMetadata> fileList, IDirectoryService directoryService, Folder parent, string collectionType)
{
return fileList.Select(f =>
{
@@ -697,7 +698,7 @@ namespace MediaBrowser.Server.Implementations.Library
_fileSystem.CreateDirectory(rootFolderPath);
- var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? (AggregateFolder)ResolvePath(new DirectoryInfo(rootFolderPath));
+ var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? (AggregateFolder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath));
// Add in the plug-in folders
foreach (var child in PluginFolderCreators)
@@ -752,7 +753,7 @@ namespace MediaBrowser.Server.Implementations.Library
if (tmpItem == null)
{
- tmpItem = (UserRootFolder)ResolvePath(new DirectoryInfo(userRootPath));
+ tmpItem = (UserRootFolder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath));
}
_userRootFolder = tmpItem;
@@ -1185,7 +1186,8 @@ namespace MediaBrowser.Server.Implementations.Library
private string GetCollectionType(string path)
{
- return new DirectoryInfo(path).EnumerateFiles("*.collection", SearchOption.TopDirectoryOnly)
+ return _fileSystem.GetFiles(path, false)
+ .Where(i => string.Equals(i.Extension, ".collection", StringComparison.OrdinalIgnoreCase))
.Select(i => _fileSystem.GetFileNameWithoutExtension(i))
.FirstOrDefault();
}
@@ -2050,11 +2052,11 @@ namespace MediaBrowser.Server.Implementations.Library
};
}
- public IEnumerable<Video> FindTrailers(BaseItem owner, List<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
+ public IEnumerable<Video> FindTrailers(BaseItem owner, List<FileSystemMetadata> fileSystemChildren, IDirectoryService directoryService)
{
- var files = fileSystemChildren.OfType<DirectoryInfo>()
+ var files = fileSystemChildren.Where(i => i.IsDirectory)
.Where(i => string.Equals(i.Name, BaseItem.TrailerFolderName, StringComparison.OrdinalIgnoreCase))
- .SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
+ .SelectMany(i => _fileSystem.GetFiles(i.FullName, false))
.ToList();
var videoListResolver = new VideoListResolver(GetNamingOptions(), new PatternsLogger());
@@ -2070,7 +2072,7 @@ namespace MediaBrowser.Server.Implementations.Library
if (currentVideo != null)
{
- files.AddRange(currentVideo.Extras.Where(i => string.Equals(i.ExtraType, "trailer", StringComparison.OrdinalIgnoreCase)).Select(i => new FileInfo(i.Path)));
+ files.AddRange(currentVideo.Extras.Where(i => string.Equals(i.ExtraType, "trailer", StringComparison.OrdinalIgnoreCase)).Select(i => _fileSystem.GetFileInfo(i.Path)));
}
return ResolvePaths(files, directoryService, null, null)
@@ -2093,11 +2095,11 @@ namespace MediaBrowser.Server.Implementations.Library
}).OrderBy(i => i.Path).ToList();
}
- public IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
+ public IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemMetadata> fileSystemChildren, IDirectoryService directoryService)
{
- var files = fileSystemChildren.OfType<DirectoryInfo>()
+ var files = fileSystemChildren.Where(i => i.IsDirectory)
.Where(i => string.Equals(i.Name, "extras", StringComparison.OrdinalIgnoreCase) || string.Equals(i.Name, "specials", StringComparison.OrdinalIgnoreCase))
- .SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
+ .SelectMany(i => _fileSystem.GetFiles(i.FullName, false))
.ToList();
var videoListResolver = new VideoListResolver(GetNamingOptions(), new PatternsLogger());
@@ -2113,7 +2115,7 @@ namespace MediaBrowser.Server.Implementations.Library
if (currentVideo != null)
{
- files.AddRange(currentVideo.Extras.Where(i => !string.Equals(i.ExtraType, "trailer", StringComparison.OrdinalIgnoreCase)).Select(i => new FileInfo(i.Path)));
+ files.AddRange(currentVideo.Extras.Where(i => !string.Equals(i.ExtraType, "trailer", StringComparison.OrdinalIgnoreCase)).Select(i => _fileSystem.GetFileInfo(i.Path)));
}
return ResolvePaths(files, directoryService, null, null)
@@ -2136,6 +2138,38 @@ namespace MediaBrowser.Server.Implementations.Library
}).OrderBy(i => i.Path).ToList();
}
+ public string SubstitutePath(string path, string from, string to)
+ {
+ if (string.IsNullOrWhiteSpace(path))
+ {
+ throw new ArgumentNullException("path");
+ }
+ if (string.IsNullOrWhiteSpace(from))
+ {
+ throw new ArgumentNullException("from");
+ }
+ if (string.IsNullOrWhiteSpace(to))
+ {
+ throw new ArgumentNullException("to");
+ }
+
+ var newPath = path.Replace(from, to, StringComparison.OrdinalIgnoreCase);
+
+ if (!string.Equals(newPath, path))
+ {
+ if (to.IndexOf('/') != -1)
+ {
+ newPath = newPath.Replace('\\', '/');
+ }
+ else
+ {
+ newPath = newPath.Replace('/', '\\');
+ }
+ }
+
+ return newPath;
+ }
+
private void SetExtraTypeFromFilename(Video item)
{
var resolver = new ExtraResolver(GetNamingOptions(), new PatternsLogger(), new RegexProvider());
diff --git a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs
index dac658095..2339364ac 100644
--- a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs
+++ b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs
@@ -88,7 +88,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// </summary>
/// <param name="item">The item.</param>
/// <param name="fileInfo">The file information.</param>
- private static void EnsureName(BaseItem item, FileSystemInfo fileInfo)
+ private static void EnsureName(BaseItem item, FileSystemMetadata fileInfo)
{
// If the subclass didn't supply a name, add it here
if (string.IsNullOrEmpty(item.Name) && !string.IsNullOrEmpty(item.Path))
@@ -179,7 +179,7 @@ namespace MediaBrowser.Server.Implementations.Library
}
}
- private static void SetDateCreated(BaseItem item, IFileSystem fileSystem, FileSystemInfo info)
+ private static void SetDateCreated(BaseItem item, IFileSystem fileSystem, FileSystemMetadata info)
{
var config = BaseItem.ConfigurationManager.GetMetadataConfiguration();
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
index 0abdc4296..80edd4097 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
@@ -107,7 +107,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
/// <param name="fileSystem">The file system.</param>
/// <param name="libraryManager">The library manager.</param>
/// <returns><c>true</c> if the specified list contains music; otherwise, <c>false</c>.</returns>
- private bool ContainsMusic(IEnumerable<FileSystemInfo> list,
+ private bool ContainsMusic(IEnumerable<FileSystemMetadata> list,
bool allowSubfolders,
IDirectoryService directoryService,
ILogger logger,
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index ff38e057b..f88ff80f4 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -13,6 +13,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using MediaBrowser.Common.IO;
namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{
@@ -43,7 +44,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}
public MultiItemResolverResult ResolveMultiple(Folder parent,
- List<FileSystemInfo> files,
+ List<FileSystemMetadata> files,
string collectionType,
IDirectoryService directoryService)
{
@@ -61,7 +62,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}
private MultiItemResolverResult ResolveMultipleInternal(Folder parent,
- List<FileSystemInfo> files,
+ List<FileSystemMetadata> files,
string collectionType,
IDirectoryService directoryService)
{
@@ -109,12 +110,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
return null;
}
- private MultiItemResolverResult ResolveVideos<T>(Folder parent, IEnumerable<FileSystemInfo> fileSystemEntries, IDirectoryService directoryService, string collectionType, bool suppportMultiEditions)
+ private MultiItemResolverResult ResolveVideos<T>(Folder parent, IEnumerable<FileSystemMetadata> fileSystemEntries, IDirectoryService directoryService, string collectionType, bool suppportMultiEditions)
where T : Video, new()
{
- var files = new List<FileSystemInfo>();
+ var files = new List<FileSystemMetadata>();
var videos = new List<BaseItem>();
- var leftOver = new List<FileSystemInfo>();
+ var leftOver = new List<FileSystemMetadata>();
// Loop through each child file/folder and see if we find a video
foreach (var child in fileSystemEntries)
@@ -343,10 +344,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
/// <param name="directoryService">The directory service.</param>
/// <param name="collectionType">Type of the collection.</param>
/// <returns>Movie.</returns>
- private T FindMovie<T>(string path, Folder parent, List<FileSystemInfo> fileSystemEntries, IDirectoryService directoryService, string collectionType)
+ private T FindMovie<T>(string path, Folder parent, List<FileSystemMetadata> fileSystemEntries, IDirectoryService directoryService, string collectionType)
where T : Video, new()
{
- var multiDiscFolders = new List<FileSystemInfo>();
+ var multiDiscFolders = new List<FileSystemMetadata>();
// Search for a folder rip
foreach (var child in fileSystemEntries)
@@ -419,7 +420,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
/// <param name="multiDiscFolders">The folders.</param>
/// <param name="directoryService">The directory service.</param>
/// <returns>``0.</returns>
- private T GetMultiDiscMovie<T>(List<FileSystemInfo> multiDiscFolders, IDirectoryService directoryService)
+ private T GetMultiDiscMovie<T>(List<FileSystemMetadata> multiDiscFolders, IDirectoryService directoryService)
where T : Video, new()
{
var videoTypes = new List<VideoType>();
@@ -492,7 +493,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
};
}
- private bool IsInvalid(Folder parent, string collectionType, IEnumerable<FileSystemInfo> files)
+ private bool IsInvalid(Folder parent, string collectionType, IEnumerable<FileSystemMetadata> files)
{
if (parent != null)
{
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
index c5565eb53..e5106f96a 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
@@ -99,7 +99,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
}
public static bool IsSeriesFolder(string path,
- IEnumerable<FileSystemInfo> fileSystemChildren,
+ IEnumerable<FileSystemMetadata> fileSystemChildren,
IDirectoryService directoryService,
IFileSystem fileSystem,
ILogger logger,
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 8eb70a638..ee5af2355 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -744,7 +744,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
if (!string.IsNullOrEmpty(info.Path))
{
item.Path = info.Path;
- var fileInfo = new FileInfo(info.Path);
+ var fileInfo = _fileSystem.GetFileInfo(info.Path);
recording.DateCreated = _fileSystem.GetCreationTimeUtc(fileInfo);
recording.DateModified = _fileSystem.GetLastWriteTimeUtc(fileInfo);
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
index 0507b032b..7d3624665 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
@@ -864,7 +864,7 @@ namespace MediaBrowser.Server.Implementations.Sync
private async Task<MediaSourceInfo> GetEncodedMediaSource(string path, User user, bool isVideo)
{
- var item = _libraryManager.ResolvePath(new FileInfo(path));
+ var item = _libraryManager.ResolvePath(_fileSystem.GetFileSystemInfo(path));
await item.RefreshMetadata(CancellationToken.None).ConfigureAwait(false);
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index aa4f5a040..29841011b 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -426,7 +426,7 @@ namespace MediaBrowser.Server.Startup.Common
var musicManager = new MusicManager(LibraryManager);
RegisterSingleInstance<IMusicManager>(new MusicManager(LibraryManager));
- LibraryMonitor = new LibraryMonitor(LogManager, TaskManager, LibraryManager, ServerConfigurationManager, FileSystemManager);
+ LibraryMonitor = new LibraryMonitor(LogManager, TaskManager, LibraryManager, ServerConfigurationManager, FileSystemManager, this);
RegisterSingleInstance(LibraryMonitor);
ProviderManager = new ProviderManager(HttpClient, ServerConfigurationManager, LibraryMonitor, LogManager, FileSystemManager, ApplicationPaths, () => LibraryManager);
diff --git a/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs
index f6b78f342..fef9741f8 100644
--- a/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs
@@ -26,7 +26,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
new BaseNfoParser<MusicAlbum>(_logger, _config).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "album.nfo"));
}
diff --git a/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs
index 64cbfe486..ee933997b 100644
--- a/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs
@@ -26,7 +26,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
new BaseNfoParser<MusicArtist>(_logger, _config).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "artist.nfo"));
}
diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs
index d7815dfb7..04cb2abcb 100644
--- a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs
@@ -55,7 +55,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
FileSystem = fileSystem;
}
- protected abstract FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService);
+ protected abstract FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService);
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
{
diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs
index fa9ef7797..90f41282d 100644
--- a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs
@@ -41,7 +41,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
}
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return MovieNfoSaver.GetMovieSavePaths(info, FileSystem)
.Select(directoryService.GetFile)
diff --git a/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs
index b7bfdeeb0..746ac7e64 100644
--- a/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs
@@ -32,7 +32,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
result.Images = images;
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
var path = Path.ChangeExtension(info.Path, ".nfo");
diff --git a/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs
index ec543ee0c..738a8e2df 100644
--- a/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs
@@ -26,7 +26,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
new SeasonNfoParser(_logger, _config).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "season.nfo"));
}
diff --git a/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs
index d9128821c..aff67dcaa 100644
--- a/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs
+++ b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs
@@ -26,7 +26,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
new SeriesNfoParser(_logger, _config).Fetch(result, path, cancellationToken);
}
- protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
{
return directoryService.GetFile(Path.Combine(info.Path, "tvshow.nfo"));
}
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index 8876e1956..93750a986 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -815,7 +815,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
if (options.SaveImagePathsInNfo)
{
- AddImages(item, writer, fileSystem, config);
+ AddImages(item, writer, libraryManager, config);
}
AddUserData(item, writer, userManager, userDataRepo, options);
@@ -879,7 +879,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
StringComparison.OrdinalIgnoreCase);
}
- private static void AddImages(BaseItem item, XmlWriter writer, IFileSystem fileSystem, IServerConfigurationManager config)
+ private static void AddImages(BaseItem item, XmlWriter writer, ILibraryManager libraryManager, IServerConfigurationManager config)
{
writer.WriteStartElement("art");
@@ -887,12 +887,12 @@ namespace MediaBrowser.XbmcMetadata.Savers
if (!string.IsNullOrEmpty(poster))
{
- writer.WriteElementString("poster", GetPathToSave(item.PrimaryImagePath, fileSystem, config));
+ writer.WriteElementString("poster", GetPathToSave(item.PrimaryImagePath, libraryManager, config));
}
foreach (var backdrop in item.GetImages(ImageType.Backdrop))
{
- writer.WriteElementString("fanart", GetPathToSave(backdrop.Path, fileSystem, config));
+ writer.WriteElementString("fanart", GetPathToSave(backdrop.Path, libraryManager, config));
}
writer.WriteEndElement();
@@ -984,7 +984,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
if (!string.IsNullOrEmpty(personEntity.PrimaryImagePath))
{
- writer.WriteElementString("thumb", GetPathToSave(personEntity.PrimaryImagePath, fileSystem, config));
+ writer.WriteElementString("thumb", GetPathToSave(personEntity.PrimaryImagePath, libraryManager, config));
}
}
catch (Exception)
@@ -996,11 +996,11 @@ namespace MediaBrowser.XbmcMetadata.Savers
}
}
- private static string GetPathToSave(string path, IFileSystem fileSystem, IServerConfigurationManager config)
+ private static string GetPathToSave(string path, ILibraryManager libraryManager, IServerConfigurationManager config)
{
foreach (var map in config.Configuration.PathSubstitutions)
{
- path = fileSystem.SubstitutePath(path, map.From, map.To);
+ path = libraryManager.SubstitutePath(path, map.From, map.To);
}
return path;