Пример #1
0
        public override void GetChildNames(string path, ReturnContainers returnContainers)
        {
            var r = AzureFilePathResolver.ResolvePath(this.Client, path);

            switch (r.PathType)
            {
            case PathType.AzureFileRoot:
                var shares = this.ListItems(path);
                foreach (CloudFileShare s in shares)
                {
                    this.RootProvider.WriteItemObject(s.Name, path, true);
                }
                break;

            case PathType.AzureFileDirectory:
                var items      = r.Directory.ListFilesAndDirectories();
                var parentPath = PathResolver.Combine(r.Parts);
                this.HandleItems(items,
                                 (f) => this.RootProvider.WriteItemObject(f.Name, PathResolver.Root, false),
                                 (d) => this.RootProvider.WriteItemObject(d.Name, PathResolver.Root, true),
                                 (s) => { }
                                 );
                break;

            case PathType.AzureFile:
            default:
                break;
            }
        }
Пример #2
0
        protected override string MakePath(string parent, string child)
        {
            var result = PathResolver.Combine(parent, child);
            var parts  = PathResolver.SplitPath(result);

            result = PathResolver.Combine(parts);

            if (parent.StartsWith(PathResolver.Root))
            {
                result = PathResolver.Root + result;
            }

            return(result);
        }
Пример #3
0
        internal void DownloadDirectory(CloudFileDirectory dir, string destination)
        {
            destination = Path.Combine(destination, dir.Name);
            Directory.CreateDirectory(destination);
            var items = dir.ListFilesAndDirectories();

            this.HandleItems(items,
                             (f) =>
            {
                f.DownloadToFile(PathResolver.Combine(destination, f.Name), FileMode.CreateNew);
            },
                             (d) =>
            {
                DownloadDirectory(d, destination);
            },
                             (s) => { });
        }
Пример #4
0
        private void DownloadShare(CloudFileShare share, string destination)
        {
            destination = PathResolver.Combine(destination, share.Name);
            Directory.CreateDirectory(destination);

            var dir   = share.GetRootDirectoryReference();
            var items = dir.ListFilesAndDirectories();

            this.HandleItems(items,
                             (f) =>
            {
                f.DownloadToFile(PathResolver.Combine(destination, f.Name), FileMode.CreateNew);
            },
                             (d) =>
            {
                DownloadDirectory(d, destination);
            },
                             (s) => { });
        }
Пример #5
0
        internal void Download(string path, string destination)
        {
            var r           = AzureFilePathResolver.ResolvePath(this.Client, path, skipCheckExistence: false);
            var targetIsDir = Directory.Exists(destination);

            switch (r.PathType)
            {
            case PathType.AzureFile:
                if (targetIsDir)
                {
                    destination = PathResolver.Combine(destination, r.Parts.Last());
                }

                r.File.DownloadToFile(destination, FileMode.CreateNew);
                break;

            case PathType.AzureFileDirectory:
                if (string.IsNullOrEmpty(r.Directory.Name))
                {
                    //at share level
                    this.DownloadShare(r.Share, destination);
                }
                else
                {
                    DownloadDirectory(r.Directory, destination);
                }
                break;

            case PathType.AzureFileRoot:
                var shares = this.Client.ListShares();
                foreach (var share in shares)
                {
                    this.DownloadShare(share, destination);
                }
                break;

            default:
                break;
            }
        }
Пример #6
0
        public override void GetChildItems(string path, bool recurse)
        {
            var folders = recurse ? new List <string>() : null;

            var items = this.ListItems(path);

            this.HandleItems(items,
                             (f) =>
            {
                f.FetchAttributes();
                this.RootProvider.WriteItemObject(f, path, true);
            },
                             (d) =>
            {
                this.RootProvider.WriteItemObject(d, path, true);
                if (recurse)
                {
                    var p = PathResolver.Combine(path, d.Name);
                    folders.Add(p);
                }
            },
                             (s) =>
            {
                this.RootProvider.WriteItemObject(s, path, true);
                if (recurse)
                {
                    var p = PathResolver.Combine(path, s.Name);
                    folders.Add(p);
                }
            });

            if (recurse && folders != null)
            {
                foreach (var f in folders)
                {
                    GetChildItems(f, recurse);
                }
            }
        }
Пример #7
0
        public override void GetChildItems(string path, bool recurse)
        {
            var folders = recurse ? new List <string>() : null;

            var items = this.ListItems(path);

            this.HandleItems(items,
                             (b) =>
            {
                this.RootProvider.WriteItemObject(b, path, true);
            },
                             (d) =>
            {
                this.RootProvider.WriteItemObject(d, path, true);
                if (recurse)
                {
                    var name = PathResolver.SplitPath(d.Prefix).Last();
                    var p    = PathResolver.Combine(path, name);
                    folders.Add(p);
                }
            },
                             (c) =>
            {
                this.RootProvider.WriteItemObject(c, path, true);
                if (recurse)
                {
                    var p = PathResolver.Combine(path, c.Name);
                    folders.Add(p);
                }
            });

            if (recurse && folders != null)
            {
                foreach (var f in folders)
                {
                    GetChildItems(f, recurse);
                }
            }
        }