aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.MediaEncoding/BdInfo/BdInfoDirectoryInfo.cs
blob: 4a54b677dd4c864e2ba7c3f8b1122f6d6f8eb6fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#pragma warning disable CS1591

using System;
using System.Linq;
using BDInfo.IO;
using MediaBrowser.Model.IO;

namespace MediaBrowser.MediaEncoding.BdInfo
{
    public class BdInfoDirectoryInfo : IDirectoryInfo
    {
        private readonly IFileSystem _fileSystem = null;

        private readonly FileSystemMetadata _impl = null;

        public BdInfoDirectoryInfo(IFileSystem fileSystem, string path)
        {
            _fileSystem = fileSystem;
            _impl = _fileSystem.GetDirectoryInfo(path);
        }

        private BdInfoDirectoryInfo(IFileSystem fileSystem, FileSystemMetadata impl)
        {
            _fileSystem = fileSystem;
            _impl = impl;
        }

        public string Name => _impl.Name;

        public string FullName => _impl.FullName;

        public IDirectoryInfo Parent
        {
            get
            {
                var parentFolder = System.IO.Path.GetDirectoryName(_impl.FullName);
                if (parentFolder != null)
                {
                    return new BdInfoDirectoryInfo(_fileSystem, parentFolder);
                }

                return null;
            }
        }

        public IDirectoryInfo[] GetDirectories()
        {
            return Array.ConvertAll(
                _fileSystem.GetDirectories(_impl.FullName).ToArray(),
                x => new BdInfoDirectoryInfo(_fileSystem, x));
        }

        public IFileInfo[] GetFiles()
        {
            return Array.ConvertAll(
                _fileSystem.GetFiles(_impl.FullName).ToArray(),
                x => new BdInfoFileInfo(x));
        }

        public IFileInfo[] GetFiles(string searchPattern)
        {
            return Array.ConvertAll(
                _fileSystem.GetFiles(_impl.FullName, new[] { searchPattern }, false, false).ToArray(),
                x => new BdInfoFileInfo(x));
        }

        public IFileInfo[] GetFiles(string searchPattern, System.IO.SearchOption searchOption)
        {
            return Array.ConvertAll(
                _fileSystem.GetFiles(
                    _impl.FullName,
                    new[] { searchPattern },
                    false,
                    searchOption.HasFlag(System.IO.SearchOption.AllDirectories)).ToArray(),
                x => new BdInfoFileInfo(x));
        }

        public static IDirectoryInfo FromFileSystemPath(Model.IO.IFileSystem fs, string path)
        {
            return new BdInfoDirectoryInfo(fs, path);
        }
    }
}