public async Task<List<User>> GetUsersListAsync(User newUser = null) { try { var usersList = new List<User>(); var tempFile = Path.GetTempFileName(); await DownloadFileAsync(tempFile, _configuration.UsersListFileName); XmlDocument document = new XmlDocument(); document.Load(tempFile); XmlNode usersListNode = document.SelectSingleNode(_configuration.UsersNodeName); XmlNodeList usersNodes = usersListNode.SelectNodes(_configuration.UserNodeName); foreach (XmlNode user in usersNodes) { var id = user.Attributes.GetNamedItem(_configuration.UserIdAttributeName).Value; var commonName = user.Attributes.GetNamedItem(_configuration.UserCommonNameAttributeName).Value; var email = user.Attributes.GetNamedItem(_configuration.UserEmailAttributeName).Value; usersList.Add(new User(id, commonName, email)); } if (!(ReferenceEquals(null, newUser))) { await AddNewUserToGroup(usersList, newUser); } File.Delete(tempFile); return usersList; } catch (DropboxException) { throw new CloudException("Couldn't load users list."); } }
private async Task AddNewUserToGroup(List<User> usersList, User newUser) { try { if (!DoesUserExist(usersList, newUser)) { usersList.Add(newUser); var settings = new XmlWriterSettings(); settings.Indent = true; settings.Async = true; var tempFile = Path.GetTempFileName(); using (XmlWriter writer = XmlWriter.Create(tempFile, settings)) { await writer.WriteStartElementAsync(null, _configuration.UsersNodeName, null); foreach (User user in usersList) { await writer.WriteStartElementAsync(null, _configuration.UserNodeName, null); await writer.WriteAttributeStringAsync(null, _configuration.UserIdAttributeName, null, user.ID); await writer.WriteAttributeStringAsync(null, _configuration.UserCommonNameAttributeName, null, user.CommonName); await writer.WriteAttributeStringAsync(null, _configuration.UserEmailAttributeName, null, user.Email); await writer.WriteEndElementAsync(); } await writer.WriteEndElementAsync(); await writer.FlushAsync(); } await _client.CreateFolderTask(_path + "/" + newUser.ID, (succes) => { }, (failure) => { }); await UploadFileAsync(tempFile, _configuration.UsersListFileName); File.Delete(tempFile); } } catch (DropboxException) { throw new CloudException("Couldn't add user to group."); } }
public async Task<List<CloudFile>> GetFilesListAsync(User user) { List<CloudFile> files = new List<CloudFile>(); MetaData meta = await _client.GetMetaDataTask(_path + user.ID + "/", null, false, false); foreach (var file in meta.Contents) { if (!file.Is_Dir) { files.Add(new CloudFile(file)); } } return files; }
public async Task DownloadCertificateAsync(string path, User user) { await DownloadFileAsync(path, user.ID + ".crt", "/"); }
public async Task DeleteFileAsync(User user, string file) { await DeleteFileAsync(file, _path + "/" + user.ID); }
public async Task DownloadFileAsync(string path, User user, string file) { await DownloadFileAsync(path, user.ID + "/" + file); }
public async Task UploadFileAsync(string path, User user, string file) { await UploadFileAsync(path, file, _path + "/" + user.ID); }
private bool DoesUserExist(List<User> usersList, User user) { var test = usersList.Find(users => users == user); return !(ReferenceEquals(null, test)); }