public void Test_AccountInfo_Error() { var request = new ListDirectoryEntriesRequest(FakeToken, FakeRepoId, "/test/subfolder/"); var message = new HttpResponseMessage(HttpStatusCode.NotFound); Assert.IsFalse(request.WasSuccessful(message)); }
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); }
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")); }
/// <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); }
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); } }