示例#1
0
 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.");
     }
 }
示例#2
0
        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.");
            }
        }
示例#3
0
 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;
 }
示例#4
0
 public async Task DownloadCertificateAsync(string path, User user)
 {
     await DownloadFileAsync(path, user.ID + ".crt", "/");
 }
示例#5
0
 public async Task DeleteFileAsync(User user, string file)
 {
     await DeleteFileAsync(file, _path + "/" + user.ID);
 }
示例#6
0
 public async Task DownloadFileAsync(string path, User user, string file)
 {
     await DownloadFileAsync(path, user.ID + "/" + file);
 }
示例#7
0
 public async Task UploadFileAsync(string path, User user, string file)
 {
     await UploadFileAsync(path, file, _path + "/" + user.ID);
 }
示例#8
0
 private bool DoesUserExist(List<User> usersList, User user)
 {
     var test = usersList.Find(users => users == user);
     return !(ReferenceEquals(null, test));
 }