/// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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;
        }
Beispiel #4
0
        /// <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);
            }
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
 /// <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);
        }
Beispiel #8
0
 /// <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)
 {
 }