public bool Exists(string file_path)
        {
            EnsureBucketName();

            using (var client = Storage.GetClient())
            {
                var s3DirectoryInfo = new S3DirectoryInfo(client, BucketName);

                var path = file_path.Split('/');
                for (var i = 0; i < path.Length - 1; i++)
                {
                    s3DirectoryInfo = s3DirectoryInfo.GetDirectory(path[i]);
                }

                return(s3DirectoryInfo.GetFiles(path.Last()).Any());
            }
        }
Exemplo n.º 2
0
        public void RenameDirectoryOnS3FileSystem()
        {
            var syncNet = new Processor(_sourceObject, _targetDirectory, new SyncTaskQueue());

            syncNet.ProcessSourceDirectory();

            var directoryToRename = _sourceObject.GetDirectories().First();

            syncNet.RenameDirectory(directoryToRename, "newName");

            var directories = _s3DirectoryInfo.GetDirectories();

            Assert.IsTrue(directories.Any(x => x.Name == "newName"));
            Assert.IsFalse(directories.Any(x => x.Name == directoryToRename.Name));

            var renamedDirectory = _s3DirectoryInfo.GetDirectory("newName");
            var files            = renamedDirectory.GetFiles();

            Assert.AreEqual(2, files.Count());
        }
        /// <summary>
        /// List bucket contents.
        /// Filter can be used to designate a directory, as long as it contains a forward slash
        /// </summary>
        /// <param name="filter">If it contains a forward slash, is directory</param>
        /// <returns></returns>
        public string[] List(string filter)
        {
            EnsureBucketName();

            var path = "";
            var exp  = @"^([^\*]+/)([^/]*)$";

            if (Regex.IsMatch(filter, exp))
            {
                path   = Regex.Replace(filter, exp, "$1");
                filter = Regex.Replace(filter, exp, "$2");
            }

            using (var client = Storage.GetClient())
            {
                var s3DirectoryInfo = new S3DirectoryInfo(client, BucketName);
                foreach (var bit in path.Split('/'))
                {
                    if (bit.Length > 0)
                    {
                        s3DirectoryInfo = s3DirectoryInfo.GetDirectory(bit);
                    }
                }
                return(s3DirectoryInfo
                       // get files
                       .GetFiles(filter)
                       .Select(f => f.Name)
                       // get directories
                       .Union(
                           s3DirectoryInfo
                           .GetDirectories(filter)
                           // add a trailing slash to distinguish directories
                           .Select(f => string.Format("{0}{1}", f.Name, "/"))
                           )
                       .ToArray());
            }
        }
Exemplo n.º 4
0
        public async Task <IStorageDirectory> GetDirectory(Uri uri)
        {
            IStorageDirectory response;
            S3DirectoryInfo   directory;

            if (uri == null)
            {
                directory = _rootDirectory;
            }
            else
            {
                directory = _rootDirectory.GetDirectory(uri.AsKey());
            }

            if (directory.Exists)
            {
                response = directory.ToStorageDirectory();
            }
            else
            {
                throw new ArgumentException("Directory not found");
            }
            return(response);
        }