コード例 #1
0
        public void Test_AccountInfo_Error()
        {
            var request = new ListDirectoryEntriesRequest(FakeToken, FakeRepoId, "/test/subfolder/");
            var message = new HttpResponseMessage(HttpStatusCode.NotFound);

            Assert.IsFalse(request.WasSuccessful(message));
        }
コード例 #2
0
        public void Test_ListDirectoryEntries_Success()
        {
            var request = new ListDirectoryEntriesRequest(FakeToken, FakeRepoId, "/test/subfolder/");

            var message = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(@"[{
                            ""id"": ""0000000000000000000000000000000000000000"",
                            ""type"": ""file"",
                            ""name"": ""test1.c"",
                            ""size"": 5431
                          }, {
                            ""id"": ""e4fe14c8cda2206bb9606907cf4fca6b30221cf9"",
                            ""type"": ""dir"",
                            ""name"": ""test_dir""}]")
            };

            Assert.IsTrue(request.WasSuccessful(message));
            var result = ExecuteSync(() => request.ParseResponseAsync(message));

            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(1, result.Count(x => x.Type == DirEntryType.Dir));
            Assert.AreEqual(1, result.Count(x => x.Type == DirEntryType.File));
            Assert.AreEqual("test1.c", result[0].Name);
            Assert.AreEqual(5431, result[0].Size);
            Assert.AreEqual(FakeRepoId, result[0].LibraryId);
            Assert.AreEqual("/test/subfolder/test_dir", result[1].Path);
            Assert.AreEqual("e4fe14c8cda2206bb9606907cf4fca6b30221cf9", result[1].Id);
        }
コード例 #3
0
        public void Test_ListDirectoryEntries_HttpRequest()
        {
            var request     = new ListDirectoryEntriesRequest(FakeToken, FakeRepoId, "/test/subfolder/");
            var httpRequest = TestConnection.CreateHttpRequestMessage(DummyServerUri, request);

            Assert.AreEqual(HttpMethod.Get, httpRequest.Method);
            var uri = httpRequest.RequestUri.ToString();

            Assert.IsTrue(uri.StartsWith(DummyServerUri + "api2/repos/" + FakeRepoId + "/dir/?"));
            // test path parameter
            Assert.IsTrue(uri.Contains("p=%2Ftest%2Fsubfolder%2F"));
        }
コード例 #4
0
        /// <summary>
        ///     List the content of the given directory of the given library
        /// </summary>
        public async Task <IList <SeafDirEntry> > ListDirectory(string libraryId, string directory)
        {
            libraryId.ThrowOnNull(nameof(libraryId));
            directory.ThrowOnNull(nameof(directory));

            if (!directory.EndsWith("/"))
            {
                directory += "/";
            }

            var request = new ListDirectoryEntriesRequest(AuthToken, libraryId, directory);
            var entries = await _webConnection.SendRequestAsync(ServerUri, request);

            return(entries);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: maikebing/SeafileClient
        private static async Task SeafClientDemo(Uri host, string user, char[] pw)
        {
            try
            {
                // if the seafile server uses a self-signed certificate we accept it
                // for demonstration purposes
                ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, errors) => true;

                // try to connect to the seafile server using the given credentials
                Console.Write("Connecting...");
                var session = await SeafSession.Establish(host, user, pw);

                Console.WriteLine("OK");
                Console.WriteLine();

                // ping the server
                Console.Write("Pinging the server...");
                if (await session.Ping())
                {
                    Console.WriteLine("OK");
                }
                else
                {
                    Console.WriteLine("Failed");
                }

                // retrieve user account info
                var info = await session.CheckAccountInfo();

                Console.WriteLine("Account info: ");
                Console.WriteLine("User name: " + info.Name);
                Console.WriteLine("Space used: " + MiscUtils.FormatByteSize(info.Usage));
                Console.WriteLine("Space total: " +
                                  (info.HasUnlimitedSpace ? "unlimited" : MiscUtils.FormatByteSize(info.Quota)));
                Console.WriteLine("");

                // create a test library
                // Console.Write("Creating library...");
                // var newLib = await session.CreateLibrary("TestLib", "123");
                // Console.WriteLine("OK");

                // groups
                Console.WriteLine("Groups:");
                var groupList = await session.ListGroups();

                foreach (var g in groupList)
                {
                    Console.WriteLine(String.Format("{0:d} {1}", g.Id, g.Name));
                }

                if (groupList.Count > 0)
                {
                    var group = groupList.First();

                    //await session.AddGroupMember(group, "*****@*****.**");
                    //Console.WriteLine("added user to group");

                    var request = new ListGroupMembersRequest(session.AuthToken, group.Id, 120);
                    var members = await session.SendRequest(request);

                    Console.WriteLine("Group members:");
                    foreach (var m in members)
                    {
                        Console.WriteLine("  " + m.Name + " " + m.Email);
                    }

                    //await session.RemoveGroupMember(group, "*****@*****.**");
                    //Console.WriteLine("removed user from group");

                    //await session.DeleteGroup(group);
                    //Console.WriteLine("deleted group: " + group.Name);
                    //await session.RenameGroup(group, "changed name");
                    //Console.WriteLine("renamed group");
                }
                else
                {
                    var group = await session.AddGroup("new group");

                    Console.WriteLine("added group: " + group.Id + " - " + group.Name);
                }

                // default library
                var defLib = await session.GetDefaultLibrary();

                Console.WriteLine("Default library: " + defLib.Name);


                // retrieve user's libraries & shared libraries
                var libs = await session.ListLibraries();

                libs = libs.Union(await session.ListSharedLibraries()).ToList();
                Console.WriteLine("Libraries:");

                IList <string[]> lines = new List <string[]>();
                lines.Add(new[] { "Modified", "Permission", "Name", "Owner" });

                foreach (var lib in libs)
                {
                    var permission = lib.Permission == SeafPermission.ReadOnly ? "r" : "rw";
                    lines.Add(new[] { lib.Timestamp.ToString(), permission, lib.Name, lib.Owner });
                }
                Console.WriteLine(MiscUtils.PadElementsInLines(lines, 2));

                // list directories recursively
                var listDirsRequest = new ListDirectoryEntriesRequest(session.AuthToken, defLib.Id, "/", true);
                var dirs            = await session.SendRequest(listDirsRequest);

                foreach (var d in dirs)
                {
                    Console.WriteLine(d.Path);
                }
            }
            catch (AggregateException ex)
            {
                if (ex.InnerException != null)
                {
                    throw ex.InnerException;
                }
            }
            catch (SeafException ex)
            {
                Console.WriteLine("Failed");
                Console.WriteLine("Request failed: " + ex.Message);
            }
        }