示例#1
0
        private IEnumerable <ObjectStorageFileInfo> GetDireftoryInfo(string dirPath)
        {
            List <ObjectStorageFileInfo> files = new List <ObjectStorageFileInfo>();

            OciResources.GetObjectStorageClient().SetRegion(RegionName);
            var directoryInfo = new ObjectStorageDirectoryInfo(OciResources.GetObjectStorageClient(), NamespaceName, BucketName, dirPath);

            while (true)
            {
                var fileInfos = directoryInfo.EnumerateNextFiles("*", System.IO.SearchOption.TopDirectoryOnly, 10);
                files.AddRange(fileInfos);

                if (files.Count() <= 0 || !directoryInfo.CheckNextPage())
                {
                    break;
                }
            }

            var topDirs = directoryInfo.EnumerateDirectories("*", System.IO.SearchOption.TopDirectoryOnly);

            foreach (var dir in topDirs)
            {
                files.AddRange(GetDireftoryInfo(dir.OriginalKey));
            }

            return(files);
        }
        private void PathBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (!IsConnection || string.IsNullOrEmpty(NowBucket))
            {
                return;
            }

            if (e.KeyCode == Keys.Return)
            {
                var path = PathBox.Text;
                if (!path.EndsWith("/"))
                {
                    path += "/";
                }
                var checkDir = new ObjectStorageDirectoryInfo(OciResources.GetObjectStorageClient(), NameSpaceName, NowBucket, path);
                if (checkDir.Exists)
                {
                    SetPath(path);
                    SetDir(path);
                }
                else
                {
                    DialogManagement.ShowMessageDialog("エラー", $"{path} が見つかりませんでした", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    PathBox.SelectAll();
                }
            }
        }
示例#3
0
        public void バケット内の第2階層以下のファイルをすべて得る()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, TestFileInfos.Keys.ToArray()[1]);

            var files = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.AllDirectories);

            Assert.IsNotNull(files);
        }
示例#4
0
        public void バケット内のルート直下のディレクトリを得る()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName);

            var dirs = objectStorageDirectoryInfo.EnumerateDirectories("*", System.IO.SearchOption.TopDirectoryOnly);

            Assert.IsNotNull(dirs);
            Assert.IsTrue(dirs.Count() == 2);
        }
        /// <summary>
        /// 指定されたディレクトリ内容をセットする
        /// </summary>
        /// <param name="dir"></param>
        private void SetDir(string dir)
        {
            SelectObject = null;
            LoadingPanelVisible(true);

            OciResources.GetObjectStorageClient().SetRegion(NowRegion);
            DirectoryInfo = new ObjectStorageDirectoryInfo(OciResources.GetObjectStorageClient(), NameSpaceName, NowBucket, dir);
            GetDireftoryInfo();

            LoadingPanelVisible(false);
        }
示例#6
0
        public void バケット内のすべてのディレクトリを得る()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName);

            var dirs = objectStorageDirectoryInfo.EnumerateDirectories("*", System.IO.SearchOption.AllDirectories);

            Assert.IsNotNull(dirs);
            foreach (var checkDir in TestFileInfos.Keys.Where(k => !string.IsNullOrEmpty(k)))
            {
                Assert.IsTrue(dirs.Any(d => d.OriginalKey == checkDir + "/"));
            }
        }
示例#7
0
        public void バケット内の特定階層のファイルのみ得るケース2_先頭スラッシュ()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, "/" + TestFileInfos.Keys.ToArray()[5]);

            var files = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);

            Assert.IsNotNull(files);
            foreach (var checks in TestFileInfos[TestFileInfos.Keys.ToArray()[5]])
            {
                Assert.IsTrue(files.Any(d => d.Name == checks));
            }
        }
示例#8
0
        public void バケット内の特定のディレクトリを削除時にサブディレクトリがあるため削除しない()
        {
            var targetDir = TestFileInfos.Keys.ToArray()[2];
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, targetDir);

            objectStorageDirectoryInfo.Delete(false);

            var dirs = objectStorageDirectoryInfo.EnumerateDirectories("*", System.IO.SearchOption.TopDirectoryOnly);

            Assert.IsNotNull(dirs);
            Assert.IsTrue(dirs.Count() != 0);
        }
示例#9
0
        public void バケット内の第2階層以下のディレクトリをすべて得る_先頭スラッシュ()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, "/" + TestFileInfos.Keys.ToArray()[1]);

            var dirs = objectStorageDirectoryInfo.EnumerateDirectories("*", System.IO.SearchOption.AllDirectories);

            Assert.IsNotNull(dirs);
            foreach (var checkDir in TestFileInfos.Keys.Where(k => !string.IsNullOrEmpty(k) && k.Contains(TestFileInfos.Keys.ToArray()[1] + "/")))
            {
                Assert.IsTrue(dirs.Any(d => d.OriginalKey == checkDir + "/"));
            }
        }
示例#10
0
        public void バケットにあるすべてのファイル情報を取得する()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName);

            var fileInfos = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.AllDirectories);

            Assert.IsNotNull(fileInfos);

            foreach (var path in TestFileRemotePaths)
            {
                var check = fileInfos.SingleOrDefault(f => f.OriginalKey == path + "/");
            }
        }
        /// <summary>
        /// ディレクトリを削除する
        /// </summary>
        /// <param name="nameSpaceName"></param>
        /// <param name="bucketName"></param>
        /// <param name="dirName"></param>
        /// <param name="regionName"></param>
        /// <returns></returns>
        public bool DeleteDirectory(string nameSpaceName, string bucketName, string dirName, string regionName)
        {
            try
            {
                ObjectStorageClient.SetRegion(regionName);
                var dirInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, nameSpaceName, bucketName, dirName + "/");
                dirInfo.Delete(true);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
示例#12
0
        public void バケットのルート位置にあるファイル情報を取得する()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName);

            var fileInfos = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);

            Assert.IsNotNull(fileInfos);
            var dir = TestFileInfos[""];

            foreach (var fileInfo in fileInfos)
            {
                var check = dir.SingleOrDefault(f => f == fileInfo.Name);
                Assert.IsNotNull(check);
                ;
            }
        }
示例#13
0
        public void バケット内の第2階層のファイルのみを削除する()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, TestFileInfos.Keys.ToArray()[2]);

            var fileInfos = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);

            Assert.IsNotNull(fileInfos);

            foreach (var fileInfo in fileInfos)
            {
                fileInfo.Delete();
            }

            fileInfos = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);
            Assert.IsTrue(fileInfos.Count() == 0);
        }
示例#14
0
        public void バケット内のファイルをすべて削除する()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName);

            var fileInfos = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.AllDirectories);

            Assert.IsNotNull(fileInfos);

            foreach (var fileInfo in fileInfos)
            {
                fileInfo.Delete();
            }

            fileInfos = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.AllDirectories);
            Assert.IsTrue(fileInfos.Count() == 0);
        }
示例#15
0
        public void バケットの特定のディレクトリ直下にあるファイル情報のみを取得する()
        {
            var targetDir = TestFileInfos.Keys.ToArray()[1];
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, targetDir);

            var fileInfos = objectStorageDirectoryInfo.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);

            Assert.IsNotNull(fileInfos);
            var dir = TestFileInfos[targetDir];

            foreach (var fileInfo in fileInfos)
            {
                var check = dir.SingleOrDefault(f => f == fileInfo.Name);
                Assert.IsNotNull(check);
            }
        }
        public static void Example(ClientConfig config)
        {
            ThreadSafeSigner threadSafeSigner = new ThreadSafeSigner(new OciSigner(config));
            var client = new ObjectStorageClient(config, threadSafeSigner)
            {
                Region = Regions.AP_TOKYO_1
            };

            var identityClient = new IdentityClient(config, threadSafeSigner)
            {
                Region = Regions.AP_TOKYO_1
            };

            var nameSpaceName = client.GetNamespace(new GetNamespaceRequest());

            // Compartment required only to get a bucket
            var listCompartmentRequest = new ListCompartmentRequest()
            {
                CompartmentId          = config.TenancyId,
                CompartmentIdInSubtree = true,
                AccessLevel            = ListCompartmentRequest.AccessLevels.ACCESSIBLE
            };

            var compartments = identityClient.ListCompartment(listCompartmentRequest).Items;

            // root(tenant) add
            compartments.Add(new OCISDK.Core.Identity.Model.Compartment {
                Id = config.TenancyId, Name = "root"
            });

            foreach (var compartment in compartments)
            {
                ListBucketsRequest listBucketsRequest = new ListBucketsRequest
                {
                    NamespaceName = nameSpaceName,
                    CompartmentId = compartment.Id,
                    Limit         = 10
                };
                var bukcets = client.ListBuckets(listBucketsRequest);

                foreach (var bukcet in bukcets.Items)
                {
                    ObjectStorageDirectoryInfo directoryInfo = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name);

                    Console.WriteLine($"* {bukcet.Name}");

                    // top files
                    var files = directoryInfo.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);
                    foreach (var file in files)
                    {
                        Console.WriteLine($"\t|- {file.Name}");
                    }

                    // top directories and files
                    var topDirs = directoryInfo.EnumerateDirectories("*", System.IO.SearchOption.TopDirectoryOnly);

                    foreach (var dir in topDirs)
                    {
                        Console.WriteLine($"\t|- {dir.Name}");
                        files = dir.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);

                        foreach (var file in files)
                        {
                            Console.WriteLine($"\t|\t|- {file.Name}");
                        }

                        // sub directories and files
                        var subDirInfo = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name, dir.Name + "/");
                        var subDirs    = subDirInfo.EnumerateDirectories("*", System.IO.SearchOption.TopDirectoryOnly);

                        foreach (var sub in subDirs)
                        {
                            Console.WriteLine($"\t|\t|- {sub.Name}");
                            files = sub.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);

                            foreach (var file in files)
                            {
                                Console.WriteLine($"\t|\t|\t|- {file.Name}");
                            }
                        }
                    }

                    foreach (var dir in topDirs)
                    {
                        // prefix directories
                        Console.WriteLine("TopDirectoryOnly prefix-----[" + dir.Name + "]");
                        var preDir   = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name, dir.Name);
                        var preFiles = preDir.EnumerateFiles("*", System.IO.SearchOption.TopDirectoryOnly);

                        foreach (var file in preFiles)
                        {
                            Console.WriteLine($"\t|- {file.FullName}");
                        }
                    }


                    foreach (var dir in topDirs)
                    {
                        // prefix directories
                        Console.WriteLine("AllDirectories prefix-----[" + dir.Name + "]");
                        var preDir   = new ObjectStorageDirectoryInfo(client, nameSpaceName, bukcet.Name, dir.Name);
                        var preFiles = preDir.EnumerateFiles("*", System.IO.SearchOption.AllDirectories);

                        foreach (var file in preFiles)
                        {
                            Console.WriteLine($"\t|- {file.FullName}");
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 名前変更
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuRename_Click(object sender, EventArgs e)
        {
            if ((SelectObject.Tag as string) == "Bucket")
            {
                DialogManagement.ShowMessageDialog("警告", "バケットの名称は変更できません", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            if ((SelectObject.Tag as string) == "Object")
            {
                InputForm inputForm = new InputForm("オブジェクト名を入力してください", SelectObject.Text);
                inputForm.ShowDialog(this);
                if (inputForm.DialogResult == DialogResult.OK)
                {
                    var text = inputForm.TextValue;
                    if (text != SelectObject.Text)
                    {
                        string now = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
                        if (OciResources.RenameObject(NameSpaceName, NowBucket, FullPath + SelectObject.Text, NowRegion, FullPath + text))
                        {
                            if (text.Contains("/"))
                            {
                                SetDir(FullPath);
                            }
                            else
                            {
                                SelectObject.Text             = text;
                                SelectObject.SubItems[3].Text = now;
                            }
                        }
                        else
                        {
                            DialogManagement.ShowMessageDialog("エラー", "名前の変更に失敗しました", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
            else if ((SelectObject.Tag as string) == "Directory")
            {
                InputForm inputForm = new InputForm("ディレクトリ名を入力してください", SelectObject.Text);
                inputForm.ShowDialog(this);
                if (inputForm.DialogResult == DialogResult.OK)
                {
                    var text = inputForm.TextValue;
                    if (text == SelectObject.Text)
                    {
                        return;
                    }
                    if (text.StartsWith("/"))
                    {
                        text = text.Remove(0, 1);
                    }
                    if (!text.EndsWith("/"))
                    {
                        text += "/";
                    }
                    List <string> failedFiles = new List <string>();
                    OciResources.GetObjectStorageClient().SetRegion(NowRegion);
                    var directoryInfo = new ObjectStorageDirectoryInfo(OciResources.GetObjectStorageClient(), NameSpaceName, NowBucket, FullPath + SelectObject.Text);
                    var files         = directoryInfo.EnumerateFiles("*", System.IO.SearchOption.AllDirectories);
                    var result        = DialogManagement.ShowMessageDialog("警告", "ディレクトリ下のすべてのファイルとディレクトリが変更されます。\nこの処理にはしばらくかかります。\n実行しますか?", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                    if (result != DialogResult.Yes)
                    {
                        return;
                    }
                    LoadingPanelVisible(true);
                    foreach (var file in files)
                    {
                        var sourceName = file.OriginalKey;
                        var newName    = text + file.OriginalKey.Replace(FullPath + SelectObject.Text + "/", "");
                        if (!OciResources.RenameObject(NameSpaceName, NowBucket, sourceName, NowRegion, newName))
                        {
                            failedFiles.Add(file.FullName);
                        }
                    }
                    LoadingPanelVisible(false);
                    if (failedFiles.Count > 0)
                    {
                        var message = "";
                        foreach (var name in failedFiles)
                        {
                            message += $"{name}\n";
                        }
                        DialogManagement.ShowMessageDialog("エラー", message + "の名前変更ができませんでした", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    if (ObjectList.Items.Find(inputForm.TextValue, false).Length > 0)
                    {
                        ObjectList.Items.Remove(SelectObject);
                    }
                    else
                    {
                        SelectObject.Text = inputForm.TextValue;
                    }
                    inputForm.Dispose();
                }
            }
        }
示例#18
0
        public void BucketExistsKey()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, TestFileRemotePaths[0]);

            Assert.IsTrue(objectStorageDirectoryInfo.Exists);
        }
示例#19
0
        public void BucketExistsDirTopSlash()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName, "/layer1");

            Assert.IsTrue(objectStorageDirectoryInfo.Exists);
        }
示例#20
0
        public void BucketNotExists()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, "abcdefgTest");

            Assert.IsFalse(objectStorageDirectoryInfo.Exists);
        }
示例#21
0
        public void BucketExists()
        {
            ObjectStorageDirectoryInfo objectStorageDirectoryInfo = new ObjectStorageDirectoryInfo(ObjectStorageClient, NameSpaceName, TestBucketName);

            Assert.IsTrue(objectStorageDirectoryInfo.Exists);
        }