BdInfoDirectoryInfo.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Linq;
  4. using BDInfo.IO;
  5. using MediaBrowser.Model.IO;
  6. namespace MediaBrowser.MediaEncoding.BdInfo
  7. {
  8. public class BdInfoDirectoryInfo : IDirectoryInfo
  9. {
  10. private readonly IFileSystem _fileSystem;
  11. private readonly FileSystemMetadata _impl;
  12. public BdInfoDirectoryInfo(IFileSystem fileSystem, string path)
  13. {
  14. _fileSystem = fileSystem;
  15. _impl = _fileSystem.GetDirectoryInfo(path);
  16. }
  17. private BdInfoDirectoryInfo(IFileSystem fileSystem, FileSystemMetadata impl)
  18. {
  19. _fileSystem = fileSystem;
  20. _impl = impl;
  21. }
  22. public string Name => _impl.Name;
  23. public string FullName => _impl.FullName;
  24. public IDirectoryInfo? Parent
  25. {
  26. get
  27. {
  28. var parentFolder = System.IO.Path.GetDirectoryName(_impl.FullName);
  29. if (parentFolder != null)
  30. {
  31. return new BdInfoDirectoryInfo(_fileSystem, parentFolder);
  32. }
  33. return null;
  34. }
  35. }
  36. public IDirectoryInfo[] GetDirectories()
  37. {
  38. return Array.ConvertAll(
  39. _fileSystem.GetDirectories(_impl.FullName).ToArray(),
  40. x => new BdInfoDirectoryInfo(_fileSystem, x));
  41. }
  42. public IFileInfo[] GetFiles()
  43. {
  44. return Array.ConvertAll(
  45. _fileSystem.GetFiles(_impl.FullName).ToArray(),
  46. x => new BdInfoFileInfo(x));
  47. }
  48. public IFileInfo[] GetFiles(string searchPattern)
  49. {
  50. return Array.ConvertAll(
  51. _fileSystem.GetFiles(_impl.FullName, new[] { searchPattern }, false, false).ToArray(),
  52. x => new BdInfoFileInfo(x));
  53. }
  54. public IFileInfo[] GetFiles(string searchPattern, System.IO.SearchOption searchOption)
  55. {
  56. return Array.ConvertAll(
  57. _fileSystem.GetFiles(
  58. _impl.FullName,
  59. new[] { searchPattern },
  60. false,
  61. (searchOption & System.IO.SearchOption.AllDirectories) == System.IO.SearchOption.AllDirectories).ToArray(),
  62. x => new BdInfoFileInfo(x));
  63. }
  64. public static IDirectoryInfo FromFileSystemPath(Model.IO.IFileSystem fs, string path)
  65. {
  66. return new BdInfoDirectoryInfo(fs, path);
  67. }
  68. }
  69. }