diff --git a/MediaBrowser.Api/Library/LibraryHelpers.cs b/MediaBrowser.Api/Library/LibraryHelpers.cs
index 72cff4560a..4837c64d79 100644
--- a/MediaBrowser.Api/Library/LibraryHelpers.cs
+++ b/MediaBrowser.Api/Library/LibraryHelpers.cs
@@ -12,6 +12,9 @@ namespace MediaBrowser.Api.Library
///
public static class LibraryHelpers
{
+ private const string ShortcutFileExtension = ".lnk";
+ private const string ShortcutFileSearch = "*.lnk";
+
///
/// Adds the virtual folder.
///
@@ -118,7 +121,7 @@ namespace MediaBrowser.Api.Library
throw new DirectoryNotFoundException(string.Format("The media collection {0} does not exist", virtualFolderName));
}
- var shortcut = Directory.EnumerateFiles(path, "*.lnk", SearchOption.AllDirectories).FirstOrDefault(f => FileSystem.ResolveShortcut(f).Equals(mediaPath, StringComparison.OrdinalIgnoreCase));
+ var shortcut = Directory.EnumerateFiles(path, ShortcutFileSearch, SearchOption.AllDirectories).FirstOrDefault(f => FileSystem.ResolveShortcut(f).Equals(mediaPath, StringComparison.OrdinalIgnoreCase));
if (!string.IsNullOrEmpty(shortcut))
{
@@ -161,12 +164,12 @@ namespace MediaBrowser.Api.Library
var shortcutFilename = Path.GetFileNameWithoutExtension(path);
- var lnk = Path.Combine(virtualFolderPath, shortcutFilename + ".lnk");
+ var lnk = Path.Combine(virtualFolderPath, shortcutFilename + ShortcutFileExtension);
while (File.Exists(lnk))
{
shortcutFilename += "1";
- lnk = Path.Combine(virtualFolderPath, shortcutFilename + ".lnk");
+ lnk = Path.Combine(virtualFolderPath, shortcutFilename + ShortcutFileExtension);
}
FileSystem.CreateShortcut(lnk, path);
@@ -181,7 +184,7 @@ namespace MediaBrowser.Api.Library
///
private static void ValidateNewMediaPath(string currentViewRootFolderPath, string mediaPath, IServerApplicationPaths appPaths)
{
- var duplicate = Directory.EnumerateFiles(appPaths.RootFolderPath, "*.lnk", SearchOption.AllDirectories)
+ var duplicate = Directory.EnumerateFiles(appPaths.RootFolderPath, ShortcutFileSearch, SearchOption.AllDirectories)
.Select(FileSystem.ResolveShortcut)
.FirstOrDefault(p => !IsNewPathValid(mediaPath, p, false));
@@ -192,7 +195,7 @@ namespace MediaBrowser.Api.Library
// Don't allow duplicate sub-paths within the same user library, or it will result in duplicate items
// See comments in IsNewPathValid
- duplicate = Directory.EnumerateFiles(currentViewRootFolderPath, "*.lnk", SearchOption.AllDirectories)
+ duplicate = Directory.EnumerateFiles(currentViewRootFolderPath, ShortcutFileSearch, SearchOption.AllDirectories)
.Select(FileSystem.ResolveShortcut)
.FirstOrDefault(p => !IsNewPathValid(mediaPath, p, true));
@@ -202,7 +205,7 @@ namespace MediaBrowser.Api.Library
}
// Make sure the current root folder doesn't already have a shortcut to the same path
- duplicate = Directory.EnumerateFiles(currentViewRootFolderPath, "*.lnk", SearchOption.AllDirectories)
+ duplicate = Directory.EnumerateFiles(currentViewRootFolderPath, ShortcutFileSearch, SearchOption.AllDirectories)
.Select(FileSystem.ResolveShortcut)
.FirstOrDefault(p => mediaPath.Equals(p, StringComparison.OrdinalIgnoreCase));
diff --git a/MediaBrowser.Controller/IO/FileSystem.cs b/MediaBrowser.Controller/IO/FileSystem.cs
index 0879ea8a4b..56b1be6b59 100644
--- a/MediaBrowser.Controller/IO/FileSystem.cs
+++ b/MediaBrowser.Controller/IO/FileSystem.cs
@@ -247,7 +247,10 @@ namespace MediaBrowser.Controller.IO
}
}
- public class WindowsShortcut
+ ///
+ /// Adapted from http://stackoverflow.com/questions/309495/windows-shortcut-lnk-parser-in-java
+ ///
+ internal class WindowsShortcut
{
public bool IsDirectory { get; private set; }
public bool IsLocal { get; private set; }