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";
}
}