/// <summary> /// Create a new instance /// </summary> /// <param name="fileInfo">File info</param> /// <param name="rootVolume">Root volume</param> /// <returns>Result instance</returns> public static ImageEntryObjectModel Create(FileInfo fileInfo, FileSystemRootVolume rootVolume) { // Get paths var parentPath = fileInfo.Directory?.FullName.Substring(rootVolume.Directory.FullName.Length); var relativePath = fileInfo.FullName.Substring(rootVolume.Directory.FullName.Length); // Get image size var imageSize = ImagingUtils.GetImageSize(fileInfo.FullName); // Create new instance var objectModel = new ImageEntryObjectModel { Read = true, Write = !rootVolume.IsReadOnly, Locked = rootVolume.IsLocked, Name = fileInfo.Name, Size = fileInfo.Length, UnixTimeStamp = (long)(fileInfo.LastWriteTimeUtc - UnixOrigin).TotalSeconds, Mime = UrlPathUtils.GetMimeType(fileInfo), Hash = rootVolume.VolumeId + UrlPathUtils.EncodePath(relativePath), ParentHash = rootVolume.VolumeId + UrlPathUtils.EncodePath(!string.IsNullOrEmpty(parentPath) ? parentPath : fileInfo.Directory?.Name), Tmb = rootVolume.GetExistingThumbHash(fileInfo) ?? "", Dimension = $"{imageSize.Width}x{imageSize.Height}" }; // Return it return(objectModel); }
/// <summary> /// Create a new instance /// </summary> /// <param name="fileInfo">File info</param> /// <param name="rootVolume">Root volume</param> /// <returns>Result instance</returns> public static FileEntryObjectModel Create(FileInfo fileInfo, FileSystemRootVolume rootVolume) { // Get paths var parentPath = fileInfo.Directory?.FullName.Substring(rootVolume.Directory.FullName.Length); var relativePath = fileInfo.FullName.Substring(rootVolume.Directory.FullName.Length); // Create new instance var objectModel = new FileEntryObjectModel { Read = true, Write = !rootVolume.IsReadOnly, Locked = rootVolume.IsLocked, Name = fileInfo.Name, Size = fileInfo.Length, UnixTimeStamp = (long)(fileInfo.LastWriteTimeUtc - UnixOrigin).TotalSeconds, Mime = UrlPathUtils.GetMimeType(fileInfo), Hash = rootVolume.VolumeId + UrlPathUtils.EncodePath(relativePath), ParentHash = rootVolume.VolumeId + UrlPathUtils.EncodePath(!string.IsNullOrEmpty(parentPath) ? parentPath : fileInfo.Directory?.Name) }; // Return it return(objectModel); }
/// <summary> /// Add root file system volume /// </summary> /// <param name="volume">Volume to add</param> public void AddRootVolume(FileSystemRootVolume volume) { // Add item RootVolumes.Add(volume); // Set volume id volume.VolumeId = VolumePrefix + RootVolumes.Count + ConnectorFileSystemDriverConstants.VolumeSeparator; }
/// <summary> /// Parse configuration /// </summary> /// <param name="config"></param> protected void ParseConfig(IELFinderConfig config) { // Create root volumes foreach (var rootVolumeConfig in config.RootVolumes) { // Create instance var rootVolume = FileSystemRootVolume.Create( rootVolumeConfig.Directory, config.ThumbnailsStorageDirectory); // Assign config values // Start directory if (!string.IsNullOrWhiteSpace(rootVolumeConfig.StartDirectory)) { rootVolume.StartDirectory = new DirectoryInfo(rootVolumeConfig.StartDirectory); } // Max upload size in kilobytes rootVolume.MaxUploadSizeKb = rootVolumeConfig.MaxUploadSizeKb; // Overwrite files when uploading rootVolume.UploadOverwrite = rootVolumeConfig.UploadOverwrite; // Thumbnails size rootVolume.ThumbnailsSize = config.ThumbnailsSize; // Thumbnails url rootVolume.ThumbnailsUrl = config.ThumbnailsUrl; // Url rootVolume.Url = rootVolumeConfig.Url; // Is read-only rootVolume.IsReadOnly = rootVolumeConfig.IsReadOnly; // Is show only rootVolume.IsShowOnly = rootVolumeConfig.IsShowOnly; // Is locked rootVolume.IsLocked = rootVolumeConfig.IsLocked; // Add to the driver AddRootVolume(rootVolume); } }
/// <summary> /// Create a new instance /// </summary> /// <param name="directoryInfo">Directory path info</param> /// <param name="rootVolume">Root volume</param> /// <returns>Result instance</returns> public static DirectoryEntryObjectModel Create(DirectoryInfo directoryInfo, FileSystemRootVolume rootVolume) { // Get visible subdirectories var subDirectories = directoryInfo.GetVisibleDirectories(); // Validate parent directory if (directoryInfo.Parent == null) { throw new ELFinderParentDirectoryNotFoundException(directoryInfo.FullName); } // Get parent path var parentPath = directoryInfo.Parent.FullName.Substring(rootVolume.Directory.FullName.Length); // Create new instance var objectModel = new DirectoryEntryObjectModel { Mime = "directory", ContainsChildDirs = subDirectories.Any(), Hash = rootVolume.VolumeId + UrlPathUtils.EncodePath( directoryInfo.FullName.Substring(rootVolume.Directory.FullName.Length)), Read = true, Write = !rootVolume.IsReadOnly, Locked = rootVolume.IsLocked, Size = 0, Name = directoryInfo.Name, UnixTimeStamp = (long)(directoryInfo.LastWriteTimeUtc - UnixOrigin).TotalSeconds, ParentHash = rootVolume.VolumeId + UrlPathUtils.EncodePath(!string.IsNullOrEmpty(parentPath) ? parentPath : directoryInfo.Parent?.Name) }; // Return it return(objectModel); }
/// <summary> /// Create a new instance /// </summary> /// <param name="root">Root volume</param> /// <param name="fileInfo">File info</param> public FileSystemVolumeFileInfo(FileSystemRootVolume root, FileInfo fileInfo) : base(root, fileInfo) { }
/// <summary> /// Create a new instance /// </summary> /// <param name="directoryInfo">Directory path info</param> /// <param name="rootVolume">Root volume</param> /// <returns>Result instance</returns> public static RootDirectoryEntryObjectModel Create(DirectoryInfo directoryInfo, FileSystemRootVolume rootVolume) { // Get visible subdirectories var subDirectories = directoryInfo.GetVisibleDirectories(); // Create new instance var objectModel = new RootDirectoryEntryObjectModel { Mime = "directory", Dirs = subDirectories.Any(), Hash = rootVolume.VolumeId + UrlPathUtils.EncodePath(directoryInfo.Name), Read = true, Write = !rootVolume.IsReadOnly, Locked = rootVolume.IsLocked, Name = rootVolume.Alias, Size = 0, UnixTimeStamp = (long)(directoryInfo.LastWriteTimeUtc - UnixOrigin).TotalSeconds, VolumeId = rootVolume.VolumeId }; // Return it return(objectModel); }
/// <summary> /// Create a new instance /// </summary> /// <param name="root">Root volume</param> /// <param name="directoryInfo">Directory info</param> public FileSystemVolumeDirectoryInfo(FileSystemRootVolume root, DirectoryInfo directoryInfo) : base(root, directoryInfo) { }