using System; using System.IO; using System.Linq; using FubarDev.FtpServer.FileSystem; using FubarDev.FtpServer.FileSystem.Generic; namespace ShadowEditor.Server.Remote.FileSystem { /// /// A implementation for the standard /// .NET file system functionality. /// public class RemoteDirectoryEntry : IUnixDirectoryEntry { /// /// Initializes a new instance of the class. /// /// The file system this entry belongs to /// The to extract the information from /// Is this the root directory? public RemoteDirectoryEntry(RemoteFileSystem fileSystem, DirectoryInfo dirInfo, bool isRoot) { FileSystem = fileSystem; Info = dirInfo; LastWriteTime = new DateTimeOffset(Info.LastWriteTime); CreatedTime = new DateTimeOffset(Info.CreationTimeUtc); var accessMode = new GenericAccessMode(true, true, true); Permissions = new GenericUnixPermissions(accessMode, accessMode, accessMode); IsRoot = isRoot; } /// /// Gets the underlying /// public DirectoryInfo Info { get; } /// public bool IsRoot { get; } /// public bool IsDeletable => !IsRoot && (FileSystem.SupportsNonEmptyDirectoryDelete || !Info.EnumerateFileSystemInfos().Any()); /// public string Name => Info.Name; /// public IUnixPermissions Permissions { get; } /// public DateTimeOffset? LastWriteTime { get; } /// public DateTimeOffset? CreatedTime { get; } /// public long NumberOfLinks => 1; /// public IUnixFileSystem FileSystem { get; } /// public string Owner => "owner"; /// public string Group => "group"; } }